diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 20eb48926460..fa1e13144dae 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -4,8 +4,8 @@ contact_links: - name: Have you read the docs? url: https://argo-workflows.readthedocs.io/en/latest/ about: Much help can be found in the docs - - name: Ask a question - url: https://github.com/argoproj/argo-workflows/discussions/new + - name: Ask a question about Codefresh's Argo Worklfows + url: https://github.com/codefresh-io/argo-workflows/discussions/new about: Ask a question or start a discussion about workflows - name: Chat on Slack url: https://argoproj.github.io/community/join-slack diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml index 28857b7d35ee..902e5e048e62 100644 --- a/.github/workflows/ci-build.yaml +++ b/.github/workflows/ci-build.yaml @@ -7,7 +7,8 @@ on: - "!release-2.8" pull_request: branches: - - "main" + - "master" + - "release-*" concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -109,7 +110,7 @@ jobs: tests: name: Unit Tests - needs: [ changed-files ] + needs: [changed-files] if: ${{ needs.changed-files.outputs.tests == 'true' }} runs-on: ubuntu-24.04 timeout-minutes: 10 @@ -131,7 +132,7 @@ jobs: tests-windows: name: Windows Unit Tests - needs: [ changed-files ] + needs: [changed-files] if: ${{ needs.changed-files.outputs.tests == 'true' }} runs-on: windows-2022 timeout-minutes: 20 @@ -186,7 +187,7 @@ jobs: e2e-tests: name: E2E Tests - needs: [ changed-files, argo-images ] + needs: [changed-files, argo-images] if: ${{ needs.changed-files.outputs.e2e-tests == 'true' }} runs-on: ubuntu-24.04 # These tests usually finish in ~25m, but occasionally they take much longer due to resource @@ -261,14 +262,14 @@ jobs: if: ${{matrix.test == 'test-java-sdk'}} uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0 with: - java-version: '8' + java-version: "8" distribution: adopt cache: maven - name: Install Python for the SDK if: ${{matrix.test == 'test-python-sdk'}} uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: - python-version: '3.x' + python-version: "3.x" cache: pip - name: Install and start K3S run: | @@ -291,7 +292,7 @@ jobs: - name: Download images uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: - pattern: '*_image.tar' + pattern: "*_image.tar" path: /tmp - name: Load images run: | @@ -370,7 +371,7 @@ jobs: # see https://github.com/orgs/community/discussions/9141#discussioncomment-2296809 and https://github.com/orgs/community/discussions/26822#discussioncomment-3305794 e2e-tests-composite-result: name: E2E Tests - Composite result - needs: [ e2e-tests ] + needs: [e2e-tests] if: ${{ always() }} runs-on: ubuntu-24.04 steps: @@ -385,7 +386,7 @@ jobs: codegen: name: Codegen - needs: [ changed-files ] + needs: [changed-files] if: ${{ needs.changed-files.outputs.codegen == 'true' }} runs-on: ubuntu-24.04 timeout-minutes: 20 @@ -422,7 +423,7 @@ jobs: lint: name: Lint - needs: [ changed-files ] + needs: [changed-files] if: ${{ needs.changed-files.outputs.lint == 'true' }} runs-on: ubuntu-24.04 timeout-minutes: 15 # must be strictly greater than the timeout in .golangci.yml @@ -444,7 +445,7 @@ jobs: ui: name: UI - needs: [ changed-files ] + needs: [changed-files] if: ${{ needs.changed-files.outputs.ui == 'true' }} runs-on: ubuntu-24.04 timeout-minutes: 6 diff --git a/.github/workflows/default-branch-check.yaml b/.github/workflows/default-branch-check.yaml new file mode 100644 index 000000000000..5f8fbc617bba --- /dev/null +++ b/.github/workflows/default-branch-check.yaml @@ -0,0 +1,18 @@ +name: PR check + +on: + pull_request: + branches: + - "release-*" + +jobs: + test-default-branch: + name: base branch is a default branch + runs-on: ubuntu-latest + steps: + - name: fail if base branch is not default branch + if: ${{ github.event.pull_request.base.ref != github.event.repository.default_branch }} + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + core.setFailed("Base branch of the PR - ${{ github.event.pull_request.base.ref }} is not a default branch. Please reopen your PR to ${{ github.event.repository.default_branch }}") diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index da5e8fbb97c1..aef6802106e4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -5,7 +5,8 @@ on: tags: - v* branches: - - main + - master + - release-* - dev-* concurrency: @@ -20,14 +21,14 @@ permissions: contents: read jobs: - build-linux: + build-linux-amd64: name: Build & push linux - if: github.repository == 'argoproj/argo-workflows' + if: github.repository == 'codefresh-io/argo-workflows' runs-on: ubuntu-24.04 strategy: matrix: - platform: [ linux/amd64, linux/arm64 ] - target: [ workflow-controller, argocli, argoexec ] + platform: [linux/amd64] + target: [workflow-controller, argocli, argoexec] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 @@ -48,12 +49,6 @@ jobs: restore-keys: | ${{ runner.os }}-${{ matrix.platform }}-${{ matrix.target }}-buildx- - - name: Docker Login - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 - with: - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_PASSWORD }} - - name: Login to Quay uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 with: @@ -94,15 +89,10 @@ jobs: build-windows: name: Build & push windows - if: github.repository == 'argoproj/argo-workflows' + if: github.repository == 'codefresh-io/argo-workflows' runs-on: windows-2022 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - name: Docker Login - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 - with: - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_PASSWORD }} - name: Login to Quay uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 @@ -118,23 +108,16 @@ jobs: docker_org=$DOCKERIO_ORG tag=$(basename $GITHUB_REF) - if [ $tag = "main" ]; then + if [ $tag = "master" ]; then tag="latest" fi targets="argoexec" for target in $targets; do image_name="${docker_org}/${target}:${tag}-windows" - docker build \ - --build-arg GIT_COMMIT=$tag \ - --build-arg GIT_BRANCH=$branch \ - --build-arg GIT_TREE_STATE=$tree_state \ - --target $target \ - -t $image_name \ - -f Dockerfile.windows \ - . - - docker push $image_name + docker build --target $target -t $image_name -f Dockerfile.windows . + ## Codefresh - remove dockerhub + # docker push $image_name docker tag $image_name quay.io/$image_name docker push quay.io/$image_name @@ -143,16 +126,11 @@ jobs: push-images: name: Push manifest with all images - if: github.repository == 'argoproj/argo-workflows' + if: github.repository == 'codefresh-io/argo-workflows' runs-on: ubuntu-24.04 - needs: [ build-linux, build-windows ] + needs: [build-linux-amd64, build-windows] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - name: Docker Login - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 - with: - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_PASSWORD }} - name: Login to Quay uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 @@ -161,16 +139,9 @@ jobs: username: ${{ secrets.QUAYIO_USERNAME }} password: ${{ secrets.QUAYIO_PASSWORD }} - - name: Install cosign - uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0 - with: - cosign-release: 'v2.2.3' - - name: Push Multiarch Image env: DOCKERIO_ORG: ${{ secrets.DOCKERIO_ORG }} - COSIGN_PRIVATE_KEY: ${{secrets.COSIGN_PRIVATE_KEY}} - COSIGN_PASSWORD: ${{secrets.COSIGN_PASSWORD}} run: | : ${DOCKER_CONFIG:=~/.docker} echo $(jq -c '. + { "experimental": "enabled" }' ${DOCKER_CONFIG}/config.json) > ${DOCKER_CONFIG}/config.json @@ -178,7 +149,7 @@ jobs: docker_org=$DOCKERIO_ORG tag=$(basename $GITHUB_REF) - if [ $tag = "main" ]; then + if [ $tag = "master" ]; then tag="latest" fi @@ -187,36 +158,30 @@ jobs: image_name="${docker_org}/${target}:${tag}" if [ $target = "argoexec" ]; then - docker manifest create $image_name ${image_name}-linux-arm64 ${image_name}-linux-amd64 ${image_name}-windows + ## Codefresh - remove dockerhub + # docker manifest create $image_name ${image_name}-linux-arm64 ${image_name}-linux-amd64 ${image_name}-windows docker manifest create quay.io/$image_name quay.io/${image_name}-linux-arm64 quay.io/${image_name}-linux-amd64 quay.io/${image_name}-windows else - docker manifest create $image_name ${image_name}-linux-arm64 ${image_name}-linux-amd64 + ## Codefresh - remove dockerhub + # docker manifest create $image_name ${image_name}-linux-arm64 ${image_name}-linux-amd64 docker manifest create quay.io/$image_name quay.io/${image_name}-linux-arm64 quay.io/${image_name}-linux-amd64 fi - docker manifest push $image_name + ## Codefresh - remove dockerhub + # docker manifest push $image_name docker manifest push quay.io/$image_name - - cosign sign -y --key env://COSIGN_PRIVATE_KEY quay.io/$image_name - done test-images-linux-amd64: name: Try pulling linux/amd64 - if: github.repository == 'argoproj/argo-workflows' + if: github.repository == 'codefresh-io/argo-workflows' runs-on: ubuntu-24.04 - needs: [ push-images ] + needs: [push-images] strategy: matrix: - platform: [ linux/amd64 ] - target: [ workflow-controller, argocli, argoexec ] + platform: [linux/amd64] + target: [workflow-controller, argocli, argoexec] steps: - - name: Docker Login - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 - with: - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_PASSWORD }} - - name: Login to Quay uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 with: @@ -231,7 +196,7 @@ jobs: TARGET: ${{ matrix.target }} run: | tag=$(basename $GITHUB_REF) - if [ $tag = "main" ]; then + if [ $tag = "master" ]; then tag="latest" fi @@ -241,16 +206,10 @@ jobs: test-images-windows: name: Try pulling windows - if: github.repository == 'argoproj/argo-workflows' + if: github.repository == 'codefresh-io/argo-workflows' runs-on: windows-2022 - needs: [ push-images ] + needs: [push-images] steps: - - name: Docker Login - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 - with: - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_PASSWORD }} - - name: Login to Quay uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 with: @@ -263,7 +222,7 @@ jobs: run: | docker_org=$DOCKERIO_ORG tag=$(basename $GITHUB_REF) - if [ $tag = "main" ]; then + if [ $tag = "master" ]; then tag="latest" fi @@ -276,14 +235,12 @@ jobs: publish-release: permissions: - contents: write # for softprops/action-gh-release to create GitHub release + contents: write # for softprops/action-gh-release to create GitHub release runs-on: ubuntu-24.04 - if: github.repository == 'argoproj/argo-workflows' - needs: [ push-images, test-images-linux-amd64, test-images-windows ] + if: github.repository == 'codefresh-io/argo-workflows' + needs: [push-images, test-images-linux-amd64, test-images-windows] env: NODE_OPTIONS: --max-old-space-size=4096 - COSIGN_PRIVATE_KEY: ${{secrets.COSIGN_PRIVATE_KEY}} - COSIGN_PASSWORD: ${{secrets.COSIGN_PASSWORD}} steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 @@ -297,44 +254,27 @@ jobs: with: path: ui/node_modules key: ${{ runner.os }}-node-dep-v1-${{ hashFiles('**/yarn.lock') }} - - name: Install cosign - uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0 + - name: go build cache + uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3 with: - cosign-release: 'v2.2.3' + path: /home/runner/.cache/go-build + key: GOCACHE-v2-${{ hashFiles('**/go.mod') }} + - name: go mod cache + uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3 + with: + path: /home/runner/go/pkg/mod + key: GOMODCACHE-v2-${{ hashFiles('**/go.mod') }} # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions - - run: | - if [ ${GITHUB_REF##*/} = main ]; then - echo "VERSION=latest" >> $GITHUB_ENV - else - echo "VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV - fi - - run: go install sigs.k8s.io/bom/cmd/bom@v0.2.0 - - run: go install github.com/spdx/spdx-sbom-generator/cmd/generator@v0.0.13 - - run: mkdir -p dist - - run: generator -o dist -p . - - run: yarn --cwd ui install - - run: generator -o dist -p ui - - run: bom generate --image quay.io/argoproj/workflow-controller:$VERSION -o dist/workflow-controller.spdx - - run: bom generate --image quay.io/argoproj/argocli:$VERSION -o dist/argocli.spdx - - run: bom generate --image quay.io/argoproj/argoexec:$VERSION -o dist/argoexec.spdx - # pack the boms into one file to make it easy to download - - run: tar -zcf dist/sbom.tar.gz dist/*.spdx - - run: make release-notes VERSION=$VERSION + - run: make release-notes VERSION=${GITHUB_REF##*/} - run: cat release-notes - - run: make manifests VERSION=$VERSION + - run: make manifests VERSION=${GITHUB_REF##*/} - name: Print image tag (please check it is not `:latest`) run: | grep image: dist/manifests/install.yaml - run: go mod download - - run: make clis STATIC_FILES=true VERSION=$VERSION + - run: make clis STATIC_FILES=true VERSION=${GITHUB_REF##*/} - name: Print version (please check it is not dirty) run: dist/argo-linux-amd64 version - - run: make checksums - - name: Sign checksums and create public key for release assets - run: | - cosign sign-blob -y --key env://COSIGN_PRIVATE_KEY ./dist/argo-workflows-cli-checksums.txt > ./dist/argo-workflows-cli-checksums.sig - # Retrieves the public key to release as an asset - cosign public-key --key env://COSIGN_PRIVATE_KEY > ./dist/argo-workflows-cosign.pub # https://github.com/softprops/action-gh-release # This will publish the release and upload assets. @@ -348,10 +288,8 @@ jobs: body_path: release-notes files: | dist/argo-*.gz - dist/argo-workflows-cli-checksums.txt - dist/argo-workflows-cli-checksums.sig + dist/argo-*.gz.sha256 dist/manifests/*.yaml - dist/argo-workflows-cosign.pub dist/sbom.tar.gz env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index b7c26d87d2af..8a91373ac3bd 100644 --- a/README.md +++ b/README.md @@ -156,9 +156,9 @@ Participation in Argo Workflows is governed by the [CNCF Code of Conduct](https: ## Project Resources -* [Argo Project GitHub organization](https://github.com/argoproj) -* [Argo Website](https://argoproj.github.io/) -* [Argo Slack](https://argoproj.github.io/community/join-slack) +* Codefresh Argo GitHub: https://github.com/codefresh-io +* Argo Website: https://argoproj.github.io/ +* Argo Slack: [click here to join](https://argoproj.github.io/community/join-slack) ## Security diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index e18ea4ee1285..8d3403bf644a 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -5852,6 +5852,13 @@ "namespace": { "description": "Namespace is the namespace of the mutex, default: [namespace of workflow]", "type": "string" + }, + "selectors": { + "description": "Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable", + "items": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.SyncSelector" + }, + "type": "array" } }, "type": "object" @@ -6801,6 +6808,13 @@ "namespace": { "description": "Namespace is the namespace of the configmap, default: [namespace of workflow]", "type": "string" + }, + "selectors": { + "description": "Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable", + "items": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.SyncSelector" + }, + "type": "array" } }, "type": "object" @@ -6950,6 +6964,20 @@ }, "type": "object" }, + "io.argoproj.workflow.v1alpha1.SyncSelector": { + "description": "Synchronization selector", + "properties": { + "name": { + "description": "Name of the selector", + "type": "string" + }, + "template": { + "description": "Template replaced with global variables", + "type": "string" + } + }, + "type": "object" + }, "io.argoproj.workflow.v1alpha1.Synchronization": { "description": "Synchronization holds synchronization lock configuration", "properties": { diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index bc16fe9238f4..6d73c0cf962c 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -9877,6 +9877,13 @@ "namespace": { "description": "Namespace is the namespace of the mutex, default: [namespace of workflow]", "type": "string" + }, + "selectors": { + "description": "Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable", + "type": "array", + "items": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.SyncSelector" + } } } }, @@ -10826,6 +10833,13 @@ "namespace": { "description": "Namespace is the namespace of the configmap, default: [namespace of workflow]", "type": "string" + }, + "selectors": { + "description": "Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable", + "type": "array", + "items": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.SyncSelector" + } } } }, @@ -10974,6 +10988,20 @@ } } }, + "io.argoproj.workflow.v1alpha1.SyncSelector": { + "description": "Synchronization selector", + "type": "object", + "properties": { + "name": { + "description": "Name of the selector", + "type": "string" + }, + "template": { + "description": "Template replaced with global variables", + "type": "string" + } + } + }, "io.argoproj.workflow.v1alpha1.Synchronization": { "description": "Synchronization holds synchronization lock configuration", "type": "object", diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index 622463a7300e..f2bc26e2c1b2 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -2163,6 +2163,7 @@ that the fieldset applies to. |------|------|---------|:--------:| ------- |-------------|---------| | name | string| `string` | | | name of the mutex | | | namespace | string| `string` | | `"[namespace of workflow]"`| | | +| selectors | [][SyncSelector](#sync-selector)| `[]*SyncSelector` | | | Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable | | @@ -3552,6 +3553,7 @@ are set, the values in SecurityContext take precedence. |------|------|---------|:--------:| ------- |-------------|---------| | configMapKeyRef | [ConfigMapKeySelector](#config-map-key-selector)| `ConfigMapKeySelector` | | | | | | namespace | string| `string` | | `"[namespace of workflow]"`| | | +| selectors | [][SyncSelector](#sync-selector)| `[]*SyncSelector` | | | Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable | | @@ -3669,6 +3671,25 @@ otherwise). +### SyncSelector + + +> Synchronization selector + + + + + + +**Properties** + +| Name | Type | Go type | Required | Default | Description | Example | +|------|------|---------|:--------:| ------- |-------------|---------| +| name | string| `string` | | | Name of the selector | | +| template | string| `string` | | | Template replaced with global variables | | + + + ### Synchronization diff --git a/docs/fields.md b/docs/fields.md index 19ef63bd5d76..c03835b72192 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -2481,6 +2481,7 @@ Mutex holds Mutex configuration |:----------:|:----------:|---------------| |`name`|`string`|name of the mutex| |`namespace`|`string`|Namespace is the namespace of the mutex, default: [namespace of workflow]| +|`selectors`|`Array<`[`SyncSelector`](#syncselector)`>`|Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable| ## SemaphoreRef @@ -2491,6 +2492,7 @@ SemaphoreRef is a reference of Semaphore |:----------:|:----------:|---------------| |`configMapKeyRef`|[`ConfigMapKeySelector`](#configmapkeyselector)|ConfigMapKeyRef is configmap selector for Semaphore configuration| |`namespace`|`string`|Namespace is the namespace of the configmap, default: [namespace of workflow]| +|`selectors`|`Array<`[`SyncSelector`](#syncselector)`>`|Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable| ## ArtifactLocation @@ -3849,6 +3851,22 @@ MetricLabel is a single label for a prometheus metric RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. In order to prevent running steps on the same host, it uses "kubernetes.io/hostname". +## SyncSelector + +Synchronization selector + +
+Examples with this field (click to open) + +- [`input-artifact-git.yaml`](https://github.com/argoproj/argo-workflows/blob/main/examples/input-artifact-git.yaml) +
+ +### Fields +| Field Name | Field Type | Description | +|:----------:|:----------:|---------------| +|`name`|`string`|Name of the selector| +|`template`|`string`|Template replaced with global variables| + ## ContainerNode _No description available_ diff --git a/examples/k8s-orchestration.yaml b/examples/k8s-orchestration.yaml index 65a8973c33c7..df7ba47115bf 100644 --- a/examples/k8s-orchestration.yaml +++ b/examples/k8s-orchestration.yaml @@ -8,80 +8,82 @@ metadata: spec: entrypoint: k8s-orchestrate templates: - - name: k8s-orchestrate - steps: - # 1. Create a parallelized kubernetes job which calculates 10 random numbers and - # waits for it to complete. Returns the job name and job uid as output parameters. - - - name: random-number-job - template: random-number-job - # 2. Using the uid of the job, query all its associated pods and prints the - # generated random numbers to stdout. - - - name: print-generated-numbers - template: print-generated-numbers - arguments: - parameters: - - name: job-uid - value: '{{steps.random-number-job.outputs.parameters.job-uid}}' - # 3. Delete the job using the job name - - - name: delete-job - template: delete-job - arguments: - parameters: - - name: job-name - value: '{{steps.random-number-job.outputs.parameters.job-name}}' + - name: k8s-orchestrate + steps: + # 1. Create a parallelized kubernetes job which calculates 10 random numbers and + # waits for it to complete. Returns the job name and job uid as output parameters. + - - name: random-number-job + template: random-number-job + # 2. Using the uid of the job, query all its associated pods and prints the + # generated random numbers to stdout. + - - name: print-generated-numbers + template: print-generated-numbers + arguments: + parameters: + - name: job-uid + value: "{{steps.random-number-job.outputs.parameters.job-uid}}" + # 3. Delete the job using the job name + - - name: delete-job + template: delete-job + arguments: + parameters: + - name: job-name + value: "{{steps.random-number-job.outputs.parameters.job-name}}" - - name: random-number-job - resource: - action: create - successCondition: status.succeeded > 9 - failureCondition: status.failed > 0 - manifest: | - apiVersion: batch/v1 - kind: Job - metadata: - generateName: rand-num- - spec: - completions: 10 - parallelism: 10 - template: - metadata: - name: rand - spec: - containers: - - name: rand - image: python:alpine3.6 - command: ["python", "-c", "import random; import time; print(random.randint(1, 1000)); time.sleep(10)"] - restartPolicy: Never - outputs: - parameters: - - name: job-name - valueFrom: - jsonPath: '{.metadata.name}' - - name: job-uid - valueFrom: - jsonPath: '{.metadata.uid}' + - name: random-number-job + resource: + action: create + successCondition: status.succeeded > 9 + failureCondition: status.failed > 0 + manifest: | + apiVersion: batch/v1 + kind: Job + metadata: + generateName: rand-num- + spec: + completions: 10 + parallelism: 10 + template: + metadata: + name: rand + spec: + containers: + - name: rand + image: python:alpine3.6 + command: ["python", "-c", "import random; import time; print(random.randint(1, 1000)); time.sleep(10)"] + restartPolicy: Never + outputs: + parameters: + - name: job-name + valueFrom: + jsonPath: "{.metadata.name}" + - name: job-uid + valueFrom: + jsonPath: "{.metadata.uid}" - - name: print-generated-numbers - inputs: - parameters: - - name: job-uid - container: - image: argoproj/argoexec:latest - command: [sh, -c] - args: [" - for i in `kubectl get pods -l controller-uid={{inputs.parameters.job-uid}} -o name`; do - kubectl logs $i; - done - "] + - name: print-generated-numbers + inputs: + parameters: + - name: job-uid + container: + image: quay.io/codefresh/argoexec:latest + command: [sh, -c] + args: [ + " + for i in `kubectl get pods -l controller-uid={{inputs.parameters.job-uid}} -o name`; do + kubectl logs $i; + done + ", + ] - - name: delete-job - inputs: - parameters: - - name: job-name - resource: - action: delete - manifest: | - apiVersion: batch/v1 - kind: Job - metadata: - name: {{inputs.parameters.job-name}} + - name: delete-job + inputs: + parameters: + - name: job-name + resource: + action: delete + manifest: | + apiVersion: batch/v1 + kind: Job + metadata: + name: {{inputs.parameters.job-name}} diff --git a/manifests/base/argo-server/argo-server-deployment.yaml b/manifests/base/argo-server/argo-server-deployment.yaml index e3672fbe16a2..6f4dcdaabefd 100644 --- a/manifests/base/argo-server/argo-server-deployment.yaml +++ b/manifests/base/argo-server/argo-server-deployment.yaml @@ -14,7 +14,7 @@ spec: serviceAccountName: argo-server containers: - name: argo-server - image: quay.io/argoproj/argocli:latest + image: quay.io/codefresh/argocli:latest securityContext: readOnlyRootFilesystem: true runAsNonRoot: true @@ -22,7 +22,7 @@ spec: capabilities: drop: - ALL - args: [ server ] + args: [server] env: [] ports: - name: web @@ -39,7 +39,7 @@ spec: name: tmp volumes: - name: tmp - emptyDir: { } + emptyDir: {} securityContext: runAsNonRoot: true nodeSelector: diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index 0cc5f7ca2477..f94e33fee75d 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -2116,6 +2116,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -2124,6 +2133,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -2143,6 +2161,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -2162,6 +2189,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -10627,6 +10663,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -10635,6 +10680,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -10654,6 +10708,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -10673,6 +10736,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -19924,6 +19996,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -19932,6 +20013,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -19951,6 +20041,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -19970,6 +20069,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index 2f40c0771299..57487541cac0 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -2150,6 +2150,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -2158,6 +2167,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -2177,6 +2195,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -2196,6 +2223,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -10661,6 +10697,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -10669,6 +10714,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -10688,6 +10742,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -10707,6 +10770,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -19958,6 +20030,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -19966,6 +20047,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -19985,6 +20075,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -20004,6 +20103,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index da9968304348..897e44078f68 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -2130,6 +2130,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -2138,6 +2147,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -2157,6 +2175,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -2176,6 +2203,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -10641,6 +10677,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -10649,6 +10694,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -10668,6 +10722,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -10687,6 +10750,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -19938,6 +20010,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -19946,6 +20027,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -19965,6 +20055,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -19984,6 +20083,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -33318,6 +33426,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -33326,6 +33443,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -33345,6 +33471,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -33364,6 +33499,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -36244,6 +36388,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -36252,6 +36405,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -36271,6 +36433,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -36290,6 +36461,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -44755,6 +44935,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -44763,6 +44952,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -44782,6 +44980,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -44801,6 +45008,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -54052,6 +54268,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -54060,6 +54285,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -54079,6 +54313,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -54098,6 +54341,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml index 1811733493d8..7bea90f68ad3 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml @@ -8489,6 +8489,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -8497,6 +8506,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -8516,6 +8534,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -8535,6 +8562,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index 330b98e7f927..0147e01dff5e 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -2115,6 +2115,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -2123,6 +2132,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -2142,6 +2160,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -2161,6 +2188,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -10626,6 +10662,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -10634,6 +10679,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -10653,6 +10707,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -10672,6 +10735,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object @@ -19923,6 +19995,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object mutexes: items: @@ -19931,6 +20012,15 @@ spec: type: string namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array semaphore: @@ -19950,6 +20040,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object semaphores: items: @@ -19969,6 +20068,15 @@ spec: x-kubernetes-map-type: atomic namespace: type: string + selectors: + items: + properties: + name: + type: string + template: + type: string + type: object + type: array type: object type: array type: object diff --git a/manifests/base/workflow-controller/workflow-controller-deployment.yaml b/manifests/base/workflow-controller/workflow-controller-deployment.yaml index dd3526a6661f..b9bf0b795d94 100644 --- a/manifests/base/workflow-controller/workflow-controller-deployment.yaml +++ b/manifests/base/workflow-controller/workflow-controller-deployment.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: argo containers: - name: workflow-controller - image: quay.io/argoproj/workflow-controller:latest + image: quay.io/codefresh/workflow-controller:latest securityContext: readOnlyRootFilesystem: true runAsNonRoot: true @@ -25,7 +25,11 @@ spec: - ALL command: - workflow-controller - args: [ ] + args: + - --configmap + - workflow-controller-configmap + - --executor-image + - quay.io/codefresh/argoexec:latest env: - name: LEADER_ELECTION_IDENTITY valueFrom: diff --git a/manifests/quick-start-minimal.yaml b/manifests/quick-start-minimal.yaml index 78ad3e0e6f80..f0db4e18b262 100644 --- a/manifests/quick-start-minimal.yaml +++ b/manifests/quick-start-minimal.yaml @@ -3612,7 +3612,7 @@ spec: - --auth-mode - client env: [] - image: quay.io/argoproj/argocli:latest + image: quay.io/codefresh/argocli:latest name: argo-server ports: - containerPort: 2746 @@ -3658,7 +3658,11 @@ spec: app: workflow-controller spec: containers: - - args: [] + - args: + - --configmap + - workflow-controller-configmap + - --executor-image + - quay.io/codefresh/argoexec:latest command: - workflow-controller env: @@ -3667,7 +3671,7 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.name - image: quay.io/argoproj/workflow-controller:latest + image: quay.io/codefresh/workflow-controller:latest livenessProbe: failureThreshold: 3 httpGet: diff --git a/manifests/quick-start-mysql.yaml b/manifests/quick-start-mysql.yaml index 9cb62fe1bd6a..4296be2f518b 100644 --- a/manifests/quick-start-mysql.yaml +++ b/manifests/quick-start-mysql.yaml @@ -3656,7 +3656,7 @@ spec: - --auth-mode - client env: [] - image: quay.io/argoproj/argocli:latest + image: quay.io/codefresh/argocli:latest name: argo-server ports: - containerPort: 2746 @@ -3702,7 +3702,11 @@ spec: app: workflow-controller spec: containers: - - args: [] + - args: + - --configmap + - workflow-controller-configmap + - --executor-image + - quay.io/codefresh/argoexec:latest command: - workflow-controller env: @@ -3711,7 +3715,7 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.name - image: quay.io/argoproj/workflow-controller:latest + image: quay.io/codefresh/workflow-controller:latest livenessProbe: failureThreshold: 3 httpGet: diff --git a/manifests/quick-start-postgres.yaml b/manifests/quick-start-postgres.yaml index 7cb175c2cea6..0b5924468174 100644 --- a/manifests/quick-start-postgres.yaml +++ b/manifests/quick-start-postgres.yaml @@ -3656,7 +3656,7 @@ spec: - --auth-mode - client env: [] - image: quay.io/argoproj/argocli:latest + image: quay.io/codefresh/argocli:latest name: argo-server ports: - containerPort: 2746 @@ -3702,7 +3702,11 @@ spec: app: workflow-controller spec: containers: - - args: [] + - args: + - --configmap + - workflow-controller-configmap + - --executor-image + - quay.io/codefresh/argoexec:latest command: - workflow-controller env: @@ -3711,7 +3715,7 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.name - image: quay.io/argoproj/workflow-controller:latest + image: quay.io/codefresh/workflow-controller:latest livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/apis/api-rules/violation_exceptions.list b/pkg/apis/api-rules/violation_exceptions.list index dc3b89a0917c..3184c9d89b5c 100644 --- a/pkg/apis/api-rules/violation_exceptions.list +++ b/pkg/apis/api-rules/violation_exceptions.list @@ -16,6 +16,7 @@ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,LabelKeys,Items API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,LabelValues,Items API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Metrics,Prometheus +API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Mutex,Selectors API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,NodeStatus,Children API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,NodeStatus,OutboundNodes API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,OAuth2Auth,EndpointParams @@ -25,6 +26,7 @@ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Parameter,Enum API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Prometheus,Labels API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,ResourceTemplate,Flags +API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SemaphoreRef,Selectors API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SemaphoreStatus,Holding API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SemaphoreStatus,Waiting API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SubmitOpts,Parameters diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 90ddb8a58c04..8455b149ca01 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -3340,10 +3340,38 @@ func (m *SuspendTemplate) XXX_DiscardUnknown() { var xxx_messageInfo_SuspendTemplate proto.InternalMessageInfo +func (m *SyncSelector) Reset() { *m = SyncSelector{} } +func (*SyncSelector) ProtoMessage() {} +func (*SyncSelector) Descriptor() ([]byte, []int) { + return fileDescriptor_724696e352c3df5f, []int{118} +} +func (m *SyncSelector) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SyncSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *SyncSelector) XXX_Merge(src proto.Message) { + xxx_messageInfo_SyncSelector.Merge(m, src) +} +func (m *SyncSelector) XXX_Size() int { + return m.Size() +} +func (m *SyncSelector) XXX_DiscardUnknown() { + xxx_messageInfo_SyncSelector.DiscardUnknown(m) +} + +var xxx_messageInfo_SyncSelector proto.InternalMessageInfo + func (m *Synchronization) Reset() { *m = Synchronization{} } func (*Synchronization) ProtoMessage() {} func (*Synchronization) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{118} + return fileDescriptor_724696e352c3df5f, []int{119} } func (m *Synchronization) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3371,7 +3399,7 @@ var xxx_messageInfo_Synchronization proto.InternalMessageInfo func (m *SynchronizationStatus) Reset() { *m = SynchronizationStatus{} } func (*SynchronizationStatus) ProtoMessage() {} func (*SynchronizationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{119} + return fileDescriptor_724696e352c3df5f, []int{120} } func (m *SynchronizationStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3399,7 +3427,7 @@ var xxx_messageInfo_SynchronizationStatus proto.InternalMessageInfo func (m *TTLStrategy) Reset() { *m = TTLStrategy{} } func (*TTLStrategy) ProtoMessage() {} func (*TTLStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{120} + return fileDescriptor_724696e352c3df5f, []int{121} } func (m *TTLStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3427,7 +3455,7 @@ var xxx_messageInfo_TTLStrategy proto.InternalMessageInfo func (m *TarStrategy) Reset() { *m = TarStrategy{} } func (*TarStrategy) ProtoMessage() {} func (*TarStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{121} + return fileDescriptor_724696e352c3df5f, []int{122} } func (m *TarStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3455,7 +3483,7 @@ var xxx_messageInfo_TarStrategy proto.InternalMessageInfo func (m *Template) Reset() { *m = Template{} } func (*Template) ProtoMessage() {} func (*Template) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{122} + return fileDescriptor_724696e352c3df5f, []int{123} } func (m *Template) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3483,7 +3511,7 @@ var xxx_messageInfo_Template proto.InternalMessageInfo func (m *TemplateRef) Reset() { *m = TemplateRef{} } func (*TemplateRef) ProtoMessage() {} func (*TemplateRef) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{123} + return fileDescriptor_724696e352c3df5f, []int{124} } func (m *TemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3511,7 +3539,7 @@ var xxx_messageInfo_TemplateRef proto.InternalMessageInfo func (m *TransformationStep) Reset() { *m = TransformationStep{} } func (*TransformationStep) ProtoMessage() {} func (*TransformationStep) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{124} + return fileDescriptor_724696e352c3df5f, []int{125} } func (m *TransformationStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3539,7 +3567,7 @@ var xxx_messageInfo_TransformationStep proto.InternalMessageInfo func (m *UserContainer) Reset() { *m = UserContainer{} } func (*UserContainer) ProtoMessage() {} func (*UserContainer) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{125} + return fileDescriptor_724696e352c3df5f, []int{126} } func (m *UserContainer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3567,7 +3595,7 @@ var xxx_messageInfo_UserContainer proto.InternalMessageInfo func (m *ValueFrom) Reset() { *m = ValueFrom{} } func (*ValueFrom) ProtoMessage() {} func (*ValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{126} + return fileDescriptor_724696e352c3df5f, []int{127} } func (m *ValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3595,7 +3623,7 @@ var xxx_messageInfo_ValueFrom proto.InternalMessageInfo func (m *Version) Reset() { *m = Version{} } func (*Version) ProtoMessage() {} func (*Version) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{127} + return fileDescriptor_724696e352c3df5f, []int{128} } func (m *Version) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3623,7 +3651,7 @@ var xxx_messageInfo_Version proto.InternalMessageInfo func (m *VolumeClaimGC) Reset() { *m = VolumeClaimGC{} } func (*VolumeClaimGC) ProtoMessage() {} func (*VolumeClaimGC) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{128} + return fileDescriptor_724696e352c3df5f, []int{129} } func (m *VolumeClaimGC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3651,7 +3679,7 @@ var xxx_messageInfo_VolumeClaimGC proto.InternalMessageInfo func (m *Workflow) Reset() { *m = Workflow{} } func (*Workflow) ProtoMessage() {} func (*Workflow) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{129} + return fileDescriptor_724696e352c3df5f, []int{130} } func (m *Workflow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3679,7 +3707,7 @@ var xxx_messageInfo_Workflow proto.InternalMessageInfo func (m *WorkflowArtifactGCTask) Reset() { *m = WorkflowArtifactGCTask{} } func (*WorkflowArtifactGCTask) ProtoMessage() {} func (*WorkflowArtifactGCTask) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{130} + return fileDescriptor_724696e352c3df5f, []int{131} } func (m *WorkflowArtifactGCTask) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3707,7 +3735,7 @@ var xxx_messageInfo_WorkflowArtifactGCTask proto.InternalMessageInfo func (m *WorkflowArtifactGCTaskList) Reset() { *m = WorkflowArtifactGCTaskList{} } func (*WorkflowArtifactGCTaskList) ProtoMessage() {} func (*WorkflowArtifactGCTaskList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{131} + return fileDescriptor_724696e352c3df5f, []int{132} } func (m *WorkflowArtifactGCTaskList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3735,7 +3763,7 @@ var xxx_messageInfo_WorkflowArtifactGCTaskList proto.InternalMessageInfo func (m *WorkflowEventBinding) Reset() { *m = WorkflowEventBinding{} } func (*WorkflowEventBinding) ProtoMessage() {} func (*WorkflowEventBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{132} + return fileDescriptor_724696e352c3df5f, []int{133} } func (m *WorkflowEventBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3763,7 +3791,7 @@ var xxx_messageInfo_WorkflowEventBinding proto.InternalMessageInfo func (m *WorkflowEventBindingList) Reset() { *m = WorkflowEventBindingList{} } func (*WorkflowEventBindingList) ProtoMessage() {} func (*WorkflowEventBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{133} + return fileDescriptor_724696e352c3df5f, []int{134} } func (m *WorkflowEventBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3791,7 +3819,7 @@ var xxx_messageInfo_WorkflowEventBindingList proto.InternalMessageInfo func (m *WorkflowEventBindingSpec) Reset() { *m = WorkflowEventBindingSpec{} } func (*WorkflowEventBindingSpec) ProtoMessage() {} func (*WorkflowEventBindingSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{134} + return fileDescriptor_724696e352c3df5f, []int{135} } func (m *WorkflowEventBindingSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3819,7 +3847,7 @@ var xxx_messageInfo_WorkflowEventBindingSpec proto.InternalMessageInfo func (m *WorkflowLevelArtifactGC) Reset() { *m = WorkflowLevelArtifactGC{} } func (*WorkflowLevelArtifactGC) ProtoMessage() {} func (*WorkflowLevelArtifactGC) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{135} + return fileDescriptor_724696e352c3df5f, []int{136} } func (m *WorkflowLevelArtifactGC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3847,7 +3875,7 @@ var xxx_messageInfo_WorkflowLevelArtifactGC proto.InternalMessageInfo func (m *WorkflowList) Reset() { *m = WorkflowList{} } func (*WorkflowList) ProtoMessage() {} func (*WorkflowList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{136} + return fileDescriptor_724696e352c3df5f, []int{137} } func (m *WorkflowList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3875,7 +3903,7 @@ var xxx_messageInfo_WorkflowList proto.InternalMessageInfo func (m *WorkflowMetadata) Reset() { *m = WorkflowMetadata{} } func (*WorkflowMetadata) ProtoMessage() {} func (*WorkflowMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{137} + return fileDescriptor_724696e352c3df5f, []int{138} } func (m *WorkflowMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3903,7 +3931,7 @@ var xxx_messageInfo_WorkflowMetadata proto.InternalMessageInfo func (m *WorkflowSpec) Reset() { *m = WorkflowSpec{} } func (*WorkflowSpec) ProtoMessage() {} func (*WorkflowSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{138} + return fileDescriptor_724696e352c3df5f, []int{139} } func (m *WorkflowSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3931,7 +3959,7 @@ var xxx_messageInfo_WorkflowSpec proto.InternalMessageInfo func (m *WorkflowStatus) Reset() { *m = WorkflowStatus{} } func (*WorkflowStatus) ProtoMessage() {} func (*WorkflowStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{139} + return fileDescriptor_724696e352c3df5f, []int{140} } func (m *WorkflowStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3959,7 +3987,7 @@ var xxx_messageInfo_WorkflowStatus proto.InternalMessageInfo func (m *WorkflowStep) Reset() { *m = WorkflowStep{} } func (*WorkflowStep) ProtoMessage() {} func (*WorkflowStep) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{140} + return fileDescriptor_724696e352c3df5f, []int{141} } func (m *WorkflowStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3987,7 +4015,7 @@ var xxx_messageInfo_WorkflowStep proto.InternalMessageInfo func (m *WorkflowTaskResult) Reset() { *m = WorkflowTaskResult{} } func (*WorkflowTaskResult) ProtoMessage() {} func (*WorkflowTaskResult) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{141} + return fileDescriptor_724696e352c3df5f, []int{142} } func (m *WorkflowTaskResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4015,7 +4043,7 @@ var xxx_messageInfo_WorkflowTaskResult proto.InternalMessageInfo func (m *WorkflowTaskResultList) Reset() { *m = WorkflowTaskResultList{} } func (*WorkflowTaskResultList) ProtoMessage() {} func (*WorkflowTaskResultList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{142} + return fileDescriptor_724696e352c3df5f, []int{143} } func (m *WorkflowTaskResultList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4043,7 +4071,7 @@ var xxx_messageInfo_WorkflowTaskResultList proto.InternalMessageInfo func (m *WorkflowTaskSet) Reset() { *m = WorkflowTaskSet{} } func (*WorkflowTaskSet) ProtoMessage() {} func (*WorkflowTaskSet) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{143} + return fileDescriptor_724696e352c3df5f, []int{144} } func (m *WorkflowTaskSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4071,7 +4099,7 @@ var xxx_messageInfo_WorkflowTaskSet proto.InternalMessageInfo func (m *WorkflowTaskSetList) Reset() { *m = WorkflowTaskSetList{} } func (*WorkflowTaskSetList) ProtoMessage() {} func (*WorkflowTaskSetList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{144} + return fileDescriptor_724696e352c3df5f, []int{145} } func (m *WorkflowTaskSetList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4099,7 +4127,7 @@ var xxx_messageInfo_WorkflowTaskSetList proto.InternalMessageInfo func (m *WorkflowTaskSetSpec) Reset() { *m = WorkflowTaskSetSpec{} } func (*WorkflowTaskSetSpec) ProtoMessage() {} func (*WorkflowTaskSetSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{145} + return fileDescriptor_724696e352c3df5f, []int{146} } func (m *WorkflowTaskSetSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4127,7 +4155,7 @@ var xxx_messageInfo_WorkflowTaskSetSpec proto.InternalMessageInfo func (m *WorkflowTaskSetStatus) Reset() { *m = WorkflowTaskSetStatus{} } func (*WorkflowTaskSetStatus) ProtoMessage() {} func (*WorkflowTaskSetStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{146} + return fileDescriptor_724696e352c3df5f, []int{147} } func (m *WorkflowTaskSetStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4155,7 +4183,7 @@ var xxx_messageInfo_WorkflowTaskSetStatus proto.InternalMessageInfo func (m *WorkflowTemplate) Reset() { *m = WorkflowTemplate{} } func (*WorkflowTemplate) ProtoMessage() {} func (*WorkflowTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{147} + return fileDescriptor_724696e352c3df5f, []int{148} } func (m *WorkflowTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4183,7 +4211,7 @@ var xxx_messageInfo_WorkflowTemplate proto.InternalMessageInfo func (m *WorkflowTemplateList) Reset() { *m = WorkflowTemplateList{} } func (*WorkflowTemplateList) ProtoMessage() {} func (*WorkflowTemplateList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{148} + return fileDescriptor_724696e352c3df5f, []int{149} } func (m *WorkflowTemplateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4211,7 +4239,7 @@ var xxx_messageInfo_WorkflowTemplateList proto.InternalMessageInfo func (m *WorkflowTemplateRef) Reset() { *m = WorkflowTemplateRef{} } func (*WorkflowTemplateRef) ProtoMessage() {} func (*WorkflowTemplateRef) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{149} + return fileDescriptor_724696e352c3df5f, []int{150} } func (m *WorkflowTemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4239,7 +4267,7 @@ var xxx_messageInfo_WorkflowTemplateRef proto.InternalMessageInfo func (m *ZipStrategy) Reset() { *m = ZipStrategy{} } func (*ZipStrategy) ProtoMessage() {} func (*ZipStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{150} + return fileDescriptor_724696e352c3df5f, []int{151} } func (m *ZipStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4395,6 +4423,7 @@ func init() { proto.RegisterType((*SubmitOpts)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.SubmitOpts") proto.RegisterType((*SuppliedValueFrom)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.SuppliedValueFrom") proto.RegisterType((*SuspendTemplate)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.SuspendTemplate") + proto.RegisterType((*SyncSelector)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.SyncSelector") proto.RegisterType((*Synchronization)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.Synchronization") proto.RegisterType((*SynchronizationStatus)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.SynchronizationStatus") proto.RegisterType((*TTLStrategy)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.TTLStrategy") @@ -4448,705 +4477,707 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 11163 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0xbd, 0x6b, 0x70, 0x64, 0xc7, - 0x75, 0x18, 0xcc, 0x3b, 0xc0, 0xe0, 0x71, 0xf0, 0x58, 0x6c, 0xef, 0x6b, 0x88, 0x25, 0x17, 0xf4, - 0xa5, 0xc8, 0x8f, 0xb4, 0x28, 0xac, 0xb9, 0x94, 0xbe, 0x30, 0x52, 0x22, 0x09, 0x8f, 0x05, 0x16, - 0x04, 0xb0, 0x00, 0x7b, 0xb0, 0xbb, 0x26, 0x45, 0x4b, 0xba, 0x98, 0x69, 0xcc, 0x5c, 0x62, 0xe6, - 0xde, 0xe1, 0xbd, 0x77, 0xb0, 0x0b, 0x3e, 0x24, 0x85, 0x7a, 0xc7, 0xb2, 0x15, 0xcb, 0x92, 0x2c, - 0x29, 0x49, 0x95, 0xa2, 0x48, 0x09, 0x4b, 0x76, 0x25, 0x65, 0xff, 0x4a, 0xd9, 0xff, 0x52, 0x29, - 0x97, 0x52, 0x4e, 0x25, 0x72, 0x45, 0x29, 0xeb, 0x87, 0x0d, 0x46, 0x9b, 0x44, 0x95, 0x4a, 0xa2, - 0xaa, 0x58, 0x15, 0x27, 0xf1, 0xe6, 0x51, 0xa9, 0x7e, 0xde, 0xee, 0x3b, 0x77, 0xb0, 0x03, 0x6c, - 0x03, 0xab, 0xb2, 0x7f, 0x01, 0x73, 0xfa, 0xf4, 0x39, 0xdd, 0x7d, 0xbb, 0x4f, 0x9f, 0x3e, 0xe7, - 0xf4, 0x69, 0x58, 0xaf, 0xf9, 0x49, 0xbd, 0xbd, 0x39, 0x5d, 0x09, 0x9b, 0x17, 0xbd, 0xa8, 0x16, - 0xb6, 0xa2, 0xf0, 0x65, 0xf6, 0xcf, 0xbb, 0x6e, 0x86, 0xd1, 0xf6, 0x56, 0x23, 0xbc, 0x19, 0x5f, - 0xdc, 0x79, 0xe6, 0x62, 0x6b, 0xbb, 0x76, 0xd1, 0x6b, 0xf9, 0xf1, 0x45, 0x09, 0xbd, 0xb8, 0xf3, - 0xb4, 0xd7, 0x68, 0xd5, 0xbd, 0xa7, 0x2f, 0xd6, 0x48, 0x40, 0x22, 0x2f, 0x21, 0xd5, 0xe9, 0x56, - 0x14, 0x26, 0x21, 0xfa, 0x60, 0x4a, 0x71, 0x5a, 0x52, 0x64, 0xff, 0x7c, 0x44, 0x51, 0x9c, 0xde, - 0x79, 0x66, 0xba, 0xb5, 0x5d, 0x9b, 0xa6, 0x14, 0xa7, 0x25, 0x74, 0x5a, 0x52, 0x9c, 0x7c, 0x97, - 0xd6, 0xa6, 0x5a, 0x58, 0x0b, 0x2f, 0x32, 0xc2, 0x9b, 0xed, 0x2d, 0xf6, 0x8b, 0xfd, 0x60, 0xff, - 0x71, 0x86, 0x93, 0xee, 0xf6, 0xb3, 0xf1, 0xb4, 0x1f, 0xd2, 0xf6, 0x5d, 0xac, 0x84, 0x11, 0xb9, - 0xb8, 0xd3, 0xd1, 0xa8, 0xc9, 0x77, 0x68, 0x38, 0xad, 0xb0, 0xe1, 0x57, 0x76, 0xf3, 0xb0, 0xde, - 0x9d, 0x62, 0x35, 0xbd, 0x4a, 0xdd, 0x0f, 0x48, 0xb4, 0x9b, 0x76, 0xbd, 0x49, 0x12, 0x2f, 0xaf, - 0xd6, 0xc5, 0x6e, 0xb5, 0xa2, 0x76, 0x90, 0xf8, 0x4d, 0xd2, 0x51, 0xe1, 0xff, 0xbf, 0x5b, 0x85, - 0xb8, 0x52, 0x27, 0x4d, 0xaf, 0xa3, 0xde, 0x33, 0xdd, 0xea, 0xb5, 0x13, 0xbf, 0x71, 0xd1, 0x0f, - 0x92, 0x38, 0x89, 0xb2, 0x95, 0xdc, 0xcb, 0x30, 0x30, 0xd3, 0x0c, 0xdb, 0x41, 0x82, 0xde, 0x07, - 0xc5, 0x1d, 0xaf, 0xd1, 0x26, 0x25, 0xe7, 0x11, 0xe7, 0x89, 0xe1, 0xd9, 0xc7, 0xbe, 0xb7, 0x37, - 0xf5, 0xc0, 0xed, 0xbd, 0xa9, 0xe2, 0x75, 0x0a, 0xbc, 0xb3, 0x37, 0x75, 0x9a, 0x04, 0x95, 0xb0, - 0xea, 0x07, 0xb5, 0x8b, 0x2f, 0xc7, 0x61, 0x30, 0x7d, 0xb5, 0xdd, 0xdc, 0x24, 0x11, 0xe6, 0x75, - 0xdc, 0x7f, 0x5d, 0x80, 0x13, 0x33, 0x51, 0xa5, 0xee, 0xef, 0x90, 0x72, 0x42, 0xe9, 0xd7, 0x76, - 0x51, 0x1d, 0xfa, 0x12, 0x2f, 0x62, 0xe4, 0x46, 0x2e, 0xad, 0x4e, 0xdf, 0xeb, 0x77, 0x9f, 0xde, - 0xf0, 0x22, 0x49, 0x7b, 0x76, 0xf0, 0xf6, 0xde, 0x54, 0xdf, 0x86, 0x17, 0x61, 0xca, 0x02, 0x35, - 0xa0, 0x3f, 0x08, 0x03, 0x52, 0x2a, 0x30, 0x56, 0x57, 0xef, 0x9d, 0xd5, 0xd5, 0x30, 0x50, 0xfd, - 0x98, 0x1d, 0xba, 0xbd, 0x37, 0xd5, 0x4f, 0x21, 0x98, 0x71, 0xa1, 0xfd, 0x7a, 0xd5, 0x6f, 0x95, - 0xfa, 0x6c, 0xf5, 0xeb, 0x45, 0xbf, 0x65, 0xf6, 0xeb, 0x45, 0xbf, 0x85, 0x29, 0x0b, 0xf7, 0xf3, - 0x05, 0x18, 0x9e, 0x89, 0x6a, 0xed, 0x26, 0x09, 0x92, 0x18, 0x7d, 0x1c, 0xa0, 0xe5, 0x45, 0x5e, - 0x93, 0x24, 0x24, 0x8a, 0x4b, 0xce, 0x23, 0x7d, 0x4f, 0x8c, 0x5c, 0x5a, 0xbe, 0x77, 0xf6, 0xeb, - 0x92, 0xe6, 0x2c, 0x12, 0x9f, 0x1c, 0x14, 0x28, 0xc6, 0x1a, 0x4b, 0xf4, 0x1a, 0x0c, 0x7b, 0x51, - 0xe2, 0x6f, 0x79, 0x95, 0x24, 0x2e, 0x15, 0x18, 0xff, 0xe7, 0xee, 0x9d, 0xff, 0x8c, 0x20, 0x39, - 0x7b, 0x52, 0xb0, 0x1f, 0x96, 0x90, 0x18, 0xa7, 0xfc, 0xdc, 0xdf, 0xed, 0x87, 0x91, 0x99, 0x28, - 0x59, 0x9c, 0x2b, 0x27, 0x5e, 0xd2, 0x8e, 0xd1, 0x1f, 0x38, 0x70, 0x2a, 0xe6, 0xc3, 0xe6, 0x93, - 0x78, 0x3d, 0x0a, 0x2b, 0x24, 0x8e, 0x49, 0x55, 0x8c, 0xcb, 0x96, 0x95, 0x76, 0x49, 0x66, 0xd3, - 0xe5, 0x4e, 0x46, 0x97, 0x83, 0x24, 0xda, 0x9d, 0x7d, 0x5a, 0xb4, 0xf9, 0x54, 0x0e, 0xc6, 0x9b, - 0x6f, 0x4f, 0x21, 0xd9, 0x15, 0x4a, 0x89, 0x7f, 0x62, 0x9c, 0xd7, 0x6a, 0xf4, 0x75, 0x07, 0x46, - 0x5b, 0x61, 0x35, 0xc6, 0xa4, 0x12, 0xb6, 0x5b, 0xa4, 0x2a, 0x86, 0xf7, 0x23, 0x76, 0xbb, 0xb1, - 0xae, 0x71, 0xe0, 0xed, 0x3f, 0x2d, 0xda, 0x3f, 0xaa, 0x17, 0x61, 0xa3, 0x29, 0xe8, 0x59, 0x18, - 0x0d, 0xc2, 0xa4, 0xdc, 0x22, 0x15, 0x7f, 0xcb, 0x27, 0x55, 0x36, 0xf1, 0x87, 0xd2, 0x9a, 0x57, - 0xb5, 0x32, 0x6c, 0x60, 0x4e, 0x2e, 0x40, 0xa9, 0xdb, 0xc8, 0xa1, 0x09, 0xe8, 0xdb, 0x26, 0xbb, - 0x5c, 0xd8, 0x60, 0xfa, 0x2f, 0x3a, 0x2d, 0x05, 0x10, 0x5d, 0xc6, 0x43, 0x42, 0xb2, 0xbc, 0xb7, - 0xf0, 0xac, 0x33, 0xf9, 0x01, 0x38, 0xd9, 0xd1, 0xf4, 0x83, 0x10, 0x70, 0xbf, 0x3f, 0x00, 0x43, - 0xf2, 0x53, 0xa0, 0x47, 0xa0, 0x3f, 0xf0, 0x9a, 0x52, 0xce, 0x8d, 0x8a, 0x7e, 0xf4, 0x5f, 0xf5, - 0x9a, 0x74, 0x85, 0x7b, 0x4d, 0x42, 0x31, 0x5a, 0x5e, 0x52, 0x67, 0x74, 0x34, 0x8c, 0x75, 0x2f, - 0xa9, 0x63, 0x56, 0x82, 0x1e, 0x82, 0xfe, 0x66, 0x58, 0x25, 0x6c, 0x2c, 0x8a, 0x5c, 0x42, 0xac, - 0x86, 0x55, 0x82, 0x19, 0x94, 0xd6, 0xdf, 0x8a, 0xc2, 0x66, 0xa9, 0xdf, 0xac, 0xbf, 0x10, 0x85, - 0x4d, 0xcc, 0x4a, 0xd0, 0xd7, 0x1c, 0x98, 0x90, 0x73, 0x7b, 0x25, 0xac, 0x78, 0x89, 0x1f, 0x06, - 0xa5, 0x22, 0x93, 0x28, 0xd8, 0xde, 0x92, 0x92, 0x94, 0x67, 0x4b, 0xa2, 0x09, 0x13, 0xd9, 0x12, - 0xdc, 0xd1, 0x0a, 0x74, 0x09, 0xa0, 0xd6, 0x08, 0x37, 0xbd, 0x06, 0x1d, 0x90, 0xd2, 0x00, 0xeb, - 0x82, 0x92, 0x0c, 0x8b, 0xaa, 0x04, 0x6b, 0x58, 0xe8, 0x16, 0x0c, 0x7a, 0x5c, 0xfa, 0x97, 0x06, - 0x59, 0x27, 0x9e, 0xb7, 0xd1, 0x09, 0x63, 0x3b, 0x99, 0x1d, 0xb9, 0xbd, 0x37, 0x35, 0x28, 0x80, - 0x58, 0xb2, 0x43, 0x4f, 0xc1, 0x50, 0xd8, 0xa2, 0xed, 0xf6, 0x1a, 0xa5, 0x21, 0x36, 0x31, 0x27, - 0x44, 0x5b, 0x87, 0xd6, 0x04, 0x1c, 0x2b, 0x0c, 0xf4, 0x24, 0x0c, 0xc6, 0xed, 0x4d, 0xfa, 0x1d, - 0x4b, 0xc3, 0xac, 0x63, 0x27, 0x04, 0xf2, 0x60, 0x99, 0x83, 0xb1, 0x2c, 0x47, 0xef, 0x81, 0x91, - 0x88, 0x54, 0xda, 0x51, 0x4c, 0xe8, 0x87, 0x2d, 0x01, 0xa3, 0x7d, 0x4a, 0xa0, 0x8f, 0xe0, 0xb4, - 0x08, 0xeb, 0x78, 0xe8, 0xfd, 0x30, 0x4e, 0x3f, 0xf0, 0xe5, 0x5b, 0xad, 0x88, 0xc4, 0x31, 0xfd, - 0xaa, 0x23, 0x8c, 0xd1, 0x59, 0x51, 0x73, 0x7c, 0xc1, 0x28, 0xc5, 0x19, 0x6c, 0xf4, 0x3a, 0x80, - 0xa7, 0x64, 0x46, 0x69, 0x94, 0x0d, 0xe6, 0x8a, 0xbd, 0x19, 0xb1, 0x38, 0x37, 0x3b, 0x4e, 0xbf, - 0x63, 0xfa, 0x1b, 0x6b, 0xfc, 0xe8, 0xf8, 0x54, 0x49, 0x83, 0x24, 0xa4, 0x5a, 0x1a, 0x63, 0x1d, - 0x56, 0xe3, 0x33, 0xcf, 0xc1, 0x58, 0x96, 0xbb, 0x7f, 0xbb, 0x00, 0x1a, 0x15, 0x34, 0x0b, 0x43, - 0x42, 0xae, 0x89, 0x25, 0x39, 0xfb, 0xb8, 0xfc, 0x0e, 0xf2, 0x0b, 0xde, 0xd9, 0xcb, 0x95, 0x87, - 0xaa, 0x1e, 0x7a, 0x03, 0x46, 0x5a, 0x61, 0x75, 0x95, 0x24, 0x5e, 0xd5, 0x4b, 0x3c, 0xb1, 0x9b, - 0x5b, 0xd8, 0x61, 0x24, 0xc5, 0xd9, 0x13, 0xf4, 0xd3, 0xad, 0xa7, 0x2c, 0xb0, 0xce, 0x0f, 0x3d, - 0x07, 0x28, 0x26, 0xd1, 0x8e, 0x5f, 0x21, 0x33, 0x95, 0x0a, 0x55, 0x89, 0xd8, 0x02, 0xe8, 0x63, - 0x9d, 0x99, 0x14, 0x9d, 0x41, 0xe5, 0x0e, 0x0c, 0x9c, 0x53, 0xcb, 0xfd, 0x41, 0x01, 0xc6, 0xb5, - 0xbe, 0xb6, 0x48, 0x05, 0xbd, 0xe5, 0xc0, 0x09, 0xb5, 0x9d, 0xcd, 0xee, 0x5e, 0xa5, 0xb3, 0x8a, - 0x6f, 0x56, 0xc4, 0xe6, 0xf7, 0xa5, 0xbc, 0xd4, 0x4f, 0xc1, 0x87, 0xcb, 0xfa, 0x73, 0xa2, 0x0f, - 0x27, 0x32, 0xa5, 0x38, 0xdb, 0xac, 0xc9, 0xaf, 0x3a, 0x70, 0x3a, 0x8f, 0x44, 0x8e, 0xcc, 0xad, - 0xeb, 0x32, 0xd7, 0xaa, 0xf0, 0xa2, 0x5c, 0x69, 0x67, 0x74, 0x39, 0xfe, 0x7f, 0x0b, 0x30, 0xa1, - 0x4f, 0x21, 0xa6, 0x09, 0xfc, 0x53, 0x07, 0xce, 0xc8, 0x1e, 0x60, 0x12, 0xb7, 0x1b, 0x99, 0xe1, - 0x6d, 0x5a, 0x1d, 0x5e, 0xbe, 0x93, 0xce, 0xe4, 0xf1, 0xe3, 0xc3, 0xfc, 0xb0, 0x18, 0xe6, 0x33, - 0xb9, 0x38, 0x38, 0xbf, 0xa9, 0x93, 0xdf, 0x76, 0x60, 0xb2, 0x3b, 0xd1, 0x9c, 0x81, 0x6f, 0x99, - 0x03, 0xff, 0xa2, 0xbd, 0x4e, 0x72, 0xf6, 0x6c, 0xf8, 0x59, 0x67, 0xf5, 0x0f, 0xf0, 0x5b, 0x43, - 0xd0, 0xb1, 0x87, 0xa0, 0xa7, 0x61, 0x44, 0x88, 0xe3, 0x95, 0xb0, 0x16, 0xb3, 0x46, 0x0e, 0xf1, - 0xb5, 0x36, 0x93, 0x82, 0xb1, 0x8e, 0x83, 0xaa, 0x50, 0x88, 0x9f, 0x11, 0x4d, 0xb7, 0x20, 0xde, - 0xca, 0xcf, 0x28, 0x2d, 0x72, 0xe0, 0xf6, 0xde, 0x54, 0xa1, 0xfc, 0x0c, 0x2e, 0xc4, 0xcf, 0x50, - 0x4d, 0xbd, 0xe6, 0x27, 0xf6, 0x34, 0xf5, 0x45, 0x3f, 0x51, 0x7c, 0x98, 0xa6, 0xbe, 0xe8, 0x27, - 0x98, 0xb2, 0xa0, 0x27, 0x90, 0x7a, 0x92, 0xb4, 0xd8, 0x8e, 0x6f, 0xe5, 0x04, 0x72, 0x65, 0x63, - 0x63, 0x5d, 0xf1, 0x62, 0xfa, 0x05, 0x85, 0x60, 0xc6, 0x05, 0x7d, 0xce, 0xa1, 0x23, 0xce, 0x0b, - 0xc3, 0x68, 0x57, 0x28, 0x0e, 0xd7, 0xec, 0x4d, 0x81, 0x30, 0xda, 0x55, 0xcc, 0xc5, 0x87, 0x54, - 0x05, 0x58, 0x67, 0xcd, 0x3a, 0x5e, 0xdd, 0x8a, 0x99, 0x9e, 0x60, 0xa7, 0xe3, 0xf3, 0x0b, 0xe5, - 0x4c, 0xc7, 0xe7, 0x17, 0xca, 0x98, 0x71, 0xa1, 0x1f, 0x34, 0xf2, 0x6e, 0x0a, 0x1d, 0xc3, 0xc2, - 0x07, 0xc5, 0xde, 0x4d, 0xf3, 0x83, 0x62, 0xef, 0x26, 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, 0xab, 0xed, 0x88, 0x2b, 0x33, 0x23, 0x97, 0xd6, 0x2c, 0xcc, 0x17, 0x4a, 0x4e, 0x71, - 0x1b, 0xbe, 0xbd, 0x37, 0x55, 0x64, 0x20, 0xcc, 0x19, 0xb9, 0xbf, 0xdf, 0x97, 0x8a, 0x0b, 0x29, - 0xcf, 0xd1, 0xaf, 0xb1, 0x8d, 0x50, 0xc8, 0x02, 0xa1, 0xfa, 0x3a, 0x47, 0xa6, 0xfa, 0x9e, 0xe2, - 0x3b, 0x9e, 0xc1, 0x0e, 0x67, 0xf9, 0xa3, 0x2f, 0x39, 0x9d, 0x67, 0x5b, 0xcf, 0xfe, 0x5e, 0x96, - 0x6e, 0xcc, 0x7c, 0xaf, 0xd8, 0xf7, 0xc8, 0x3b, 0xf9, 0x39, 0x27, 0x55, 0x22, 0xe2, 0x6e, 0xfb, - 0xc0, 0x47, 0xcd, 0x7d, 0xc0, 0xe2, 0x81, 0x5c, 0x97, 0xfb, 0x9f, 0x77, 0x60, 0x4c, 0xc2, 0xa9, - 0x7a, 0x1c, 0xa3, 0x5b, 0x30, 0x24, 0x5b, 0x2a, 0xbe, 0x9e, 0x4d, 0x5b, 0x80, 0x52, 0xe2, 0x55, - 0x63, 0x14, 0x37, 0xf7, 0xad, 0x01, 0x40, 0xe9, 0x5e, 0xd5, 0x0a, 0x63, 0x9f, 0x49, 0xa2, 0x43, - 0xec, 0x42, 0x81, 0xb6, 0x0b, 0x5d, 0xb7, 0xb9, 0x0b, 0xa5, 0xcd, 0x32, 0xf6, 0xa3, 0x2f, 0x65, - 0xe4, 0x36, 0xdf, 0x98, 0x3e, 0x72, 0x24, 0x72, 0x5b, 0x6b, 0xc2, 0xfe, 0x12, 0x7c, 0x47, 0x48, - 0x70, 0xbe, 0x75, 0xfd, 0xa2, 0x5d, 0x09, 0xae, 0xb5, 0x22, 0x2b, 0xcb, 0x23, 0x2e, 0x61, 0xf9, - 0xde, 0x75, 0xc3, 0xaa, 0x84, 0xd5, 0xb8, 0x9a, 0xb2, 0x36, 0xe2, 0xb2, 0x76, 0xc0, 0x16, 0x4f, - 0x4d, 0xd6, 0x66, 0x79, 0x2a, 0xa9, 0xfb, 0xaa, 0x94, 0xba, 0x7c, 0xd7, 0x7a, 0xc1, 0xb2, 0xd4, - 0xd5, 0xf8, 0x76, 0xca, 0xdf, 0x57, 0xe0, 0x4c, 0x27, 0x1e, 0x26, 0x5b, 0xe8, 0x22, 0x0c, 0x57, - 0xc2, 0x60, 0xcb, 0xaf, 0xad, 0x7a, 0x2d, 0x71, 0x5e, 0x53, 0xb2, 0x68, 0x4e, 0x16, 0xe0, 0x14, - 0x07, 0x3d, 0xcc, 0x05, 0x0f, 0xb7, 0x88, 0x8c, 0x08, 0xd4, 0xbe, 0x65, 0xb2, 0xcb, 0xa4, 0xd0, - 0x7b, 0x87, 0xbe, 0xf6, 0xcd, 0xa9, 0x07, 0x3e, 0xf1, 0xc7, 0x8f, 0x3c, 0xe0, 0xfe, 0x61, 0x1f, - 0x9c, 0xcf, 0xe5, 0x29, 0xb4, 0xf5, 0xdf, 0x32, 0xb4, 0x75, 0xad, 0x5c, 0x48, 0x91, 0x1b, 0x36, - 0x15, 0x59, 0x8d, 0x7c, 0x9e, 0x5e, 0xae, 0x15, 0xe3, 0xfc, 0x46, 0xd1, 0x81, 0x0a, 0xbc, 0x26, - 0x89, 0x5b, 0x5e, 0x85, 0x88, 0xde, 0xab, 0x81, 0xba, 0x2a, 0x0b, 0x70, 0x8a, 0xc3, 0x8f, 0xd0, - 0x5b, 0x5e, 0xbb, 0x91, 0x08, 0x43, 0x99, 0x76, 0x84, 0x66, 0x60, 0x2c, 0xcb, 0xd1, 0xdf, 0x71, - 0x00, 0x75, 0x72, 0x15, 0x0b, 0x71, 0xe3, 0x28, 0xc6, 0x61, 0xf6, 0xec, 0x6d, 0xed, 0x10, 0xae, - 0xf5, 0x34, 0xa7, 0x1d, 0xda, 0x37, 0xfd, 0x58, 0xba, 0x0f, 0xf1, 0xc3, 0x41, 0x0f, 0x36, 0x34, - 0x66, 0x6a, 0xa9, 0x54, 0x48, 0x1c, 0x73, 0x73, 0x9c, 0x6e, 0x6a, 0x61, 0x60, 0x2c, 0xcb, 0xd1, - 0x14, 0x14, 0x49, 0x14, 0x85, 0x91, 0x38, 0x6b, 0xb3, 0x69, 0x7c, 0x99, 0x02, 0x30, 0x87, 0xbb, - 0x3f, 0x2e, 0x40, 0xa9, 0xdb, 0xe9, 0x04, 0xfd, 0x8e, 0x76, 0xae, 0x16, 0x27, 0x27, 0x71, 0xf0, - 0x0b, 0x8f, 0xee, 0x4c, 0x94, 0x3d, 0x00, 0x76, 0x39, 0x61, 0x8b, 0x52, 0x9c, 0x6d, 0xe0, 0xe4, - 0x97, 0xb5, 0x13, 0xb6, 0x4e, 0x22, 0x67, 0x83, 0xdf, 0x32, 0x37, 0xf8, 0x75, 0xdb, 0x9d, 0xd2, - 0xb7, 0xf9, 0x3f, 0x29, 0xc2, 0x29, 0x59, 0x5a, 0x26, 0x74, 0xab, 0x7c, 0xbe, 0x4d, 0xa2, 0x5d, - 0xf4, 0x47, 0x0e, 0x9c, 0xf6, 0xb2, 0xa6, 0x1b, 0x9f, 0x1c, 0xc1, 0x40, 0x6b, 0x5c, 0xa7, 0x67, - 0x72, 0x38, 0xf2, 0x81, 0xbe, 0x24, 0x06, 0xfa, 0x74, 0x1e, 0x4a, 0x17, 0xbb, 0x7b, 0x6e, 0x07, - 0xd0, 0xb3, 0x30, 0x2a, 0xe1, 0xcc, 0xdc, 0xc3, 0x97, 0xb8, 0x32, 0x6e, 0xcf, 0x68, 0x65, 0xd8, - 0xc0, 0xa4, 0x35, 0x13, 0xd2, 0x6c, 0x35, 0xbc, 0x84, 0x68, 0x86, 0x22, 0x55, 0x73, 0x43, 0x2b, - 0xc3, 0x06, 0x26, 0x7a, 0x1c, 0x06, 0x82, 0xb0, 0x4a, 0x96, 0xaa, 0xc2, 0x40, 0x3c, 0x2e, 0xea, - 0x0c, 0x5c, 0x65, 0x50, 0x2c, 0x4a, 0xd1, 0x63, 0xa9, 0x35, 0xae, 0xc8, 0x96, 0xd0, 0x48, 0x9e, - 0x25, 0x0e, 0xfd, 0x3d, 0x07, 0x86, 0x69, 0x8d, 0x8d, 0xdd, 0x16, 0xa1, 0x7b, 0x1b, 0xfd, 0x22, - 0xd5, 0xa3, 0xf9, 0x22, 0x57, 0x25, 0x1b, 0xd3, 0xd4, 0x31, 0xac, 0xe0, 0x6f, 0xbe, 0x3d, 0x35, - 0x24, 0x7f, 0xe0, 0xb4, 0x55, 0x93, 0x8b, 0xf0, 0x60, 0xd7, 0xaf, 0x79, 0x20, 0x57, 0xc0, 0x5f, - 0x83, 0x71, 0xb3, 0x11, 0x07, 0xf2, 0x03, 0xfc, 0x13, 0x6d, 0xd9, 0xf1, 0x7e, 0x09, 0x79, 0x76, - 0xdf, 0xb4, 0x59, 0x35, 0x19, 0xe6, 0xc5, 0xd4, 0x33, 0x27, 0xc3, 0xbc, 0x98, 0x0c, 0xf3, 0xee, - 0x1f, 0x38, 0xe9, 0xd2, 0xd4, 0xd4, 0x3c, 0xba, 0x31, 0xb7, 0xa3, 0x86, 0x10, 0xc4, 0x6a, 0x63, - 0xbe, 0x86, 0x57, 0x30, 0x85, 0xa3, 0x2f, 0x6b, 0xd2, 0x91, 0x56, 0x6b, 0x0b, 0xb7, 0x86, 0x25, - 0x13, 0xbd, 0x41, 0xb8, 0x53, 0xfe, 0x89, 0x02, 0x9c, 0x6d, 0x82, 0xfb, 0xa5, 0x02, 0x3c, 0xbc, - 0xaf, 0xd2, 0x9a, 0xdb, 0x70, 0xe7, 0xbe, 0x37, 0x9c, 0x6e, 0x6b, 0x11, 0x69, 0x85, 0xd7, 0xf0, - 0x8a, 0xf8, 0x5e, 0x6a, 0x5b, 0xc3, 0x1c, 0x8c, 0x65, 0x39, 0x55, 0x1d, 0xb6, 0xc9, 0xee, 0x42, - 0x18, 0x35, 0xbd, 0x44, 0x48, 0x07, 0xa5, 0x3a, 0x2c, 0xcb, 0x02, 0x9c, 0xe2, 0xb8, 0x7f, 0xe4, - 0x40, 0xb6, 0x01, 0xc8, 0x83, 0xf1, 0x76, 0x4c, 0x22, 0xba, 0xa5, 0x96, 0x49, 0x25, 0x22, 0x72, - 0x7a, 0x3e, 0x36, 0xcd, 0xbd, 0xfd, 0xb4, 0x87, 0xd3, 0x95, 0x30, 0x22, 0xd3, 0x3b, 0x4f, 0x4f, - 0x73, 0x8c, 0x65, 0xb2, 0x5b, 0x26, 0x0d, 0x42, 0x69, 0xcc, 0xa2, 0xdb, 0x7b, 0x53, 0xe3, 0xd7, - 0x0c, 0x02, 0x38, 0x43, 0x90, 0xb2, 0x68, 0x79, 0x71, 0x7c, 0x33, 0x8c, 0xaa, 0x82, 0x45, 0xe1, - 0xc0, 0x2c, 0xd6, 0x0d, 0x02, 0x38, 0x43, 0xd0, 0xfd, 0x01, 0x3d, 0x3e, 0xea, 0x5a, 0x2b, 0xfa, - 0x26, 0xd5, 0x7d, 0x28, 0x64, 0xb6, 0x11, 0x6e, 0xce, 0x85, 0x41, 0xe2, 0xf9, 0x01, 0x91, 0xc1, - 0x02, 0x1b, 0x96, 0x74, 0x64, 0x83, 0x76, 0x6a, 0xc3, 0xef, 0x2c, 0xc3, 0x39, 0x6d, 0xa1, 0x3a, - 0xce, 0x66, 0x23, 0xdc, 0xcc, 0x7a, 0x01, 0x29, 0x12, 0x66, 0x25, 0xee, 0x4f, 0x1d, 0x38, 0xd7, - 0x45, 0x19, 0x47, 0x5f, 0x75, 0x60, 0x6c, 0xf3, 0x67, 0xa2, 0x6f, 0x66, 0x33, 0xd0, 0xfb, 0x61, - 0x9c, 0x02, 0xe8, 0x4e, 0x24, 0xe6, 0x66, 0xc1, 0xf4, 0x50, 0xcd, 0x1a, 0xa5, 0x38, 0x83, 0xed, - 0xfe, 0x7a, 0x01, 0x72, 0xb8, 0xa0, 0xa7, 0x60, 0x88, 0x04, 0xd5, 0x56, 0xe8, 0x07, 0x89, 0x10, - 0x46, 0x4a, 0xea, 0x5d, 0x16, 0x70, 0xac, 0x30, 0xc4, 0xf9, 0x43, 0x0c, 0x4c, 0xa1, 0xe3, 0xfc, - 0x21, 0x5a, 0x9e, 0xe2, 0xa0, 0x1a, 0x4c, 0x78, 0xdc, 0xbf, 0xc2, 0xe6, 0x1e, 0x9b, 0xa6, 0x7d, - 0x07, 0x99, 0xa6, 0xa7, 0x99, 0xfb, 0x33, 0x43, 0x02, 0x77, 0x10, 0x45, 0xef, 0x81, 0x91, 0x76, - 0x4c, 0xca, 0xf3, 0xcb, 0x73, 0x11, 0xa9, 0xf2, 0x53, 0xb1, 0xe6, 0xf7, 0xbb, 0x96, 0x16, 0x61, - 0x1d, 0xcf, 0xfd, 0x67, 0x0e, 0x0c, 0xce, 0x7a, 0x95, 0xed, 0x70, 0x6b, 0x8b, 0x0e, 0x45, 0xb5, - 0x1d, 0xa5, 0x86, 0x2d, 0x6d, 0x28, 0xe6, 0x05, 0x1c, 0x2b, 0x0c, 0xb4, 0x01, 0x03, 0x7c, 0xc1, - 0x8b, 0x65, 0xf7, 0x0b, 0x5a, 0x7f, 0x54, 0x1c, 0x0f, 0x9b, 0x0e, 0xed, 0xc4, 0x6f, 0x4c, 0xf3, - 0x38, 0x9e, 0xe9, 0xa5, 0x20, 0x59, 0x8b, 0xca, 0x49, 0xe4, 0x07, 0xb5, 0x59, 0xa0, 0xdb, 0xc5, - 0x02, 0xa3, 0x81, 0x05, 0x2d, 0xda, 0x8d, 0xa6, 0x77, 0x4b, 0xb2, 0x13, 0xe2, 0x47, 0x75, 0x63, - 0x35, 0x2d, 0xc2, 0x3a, 0x9e, 0xfb, 0x87, 0x0e, 0x0c, 0xcf, 0x7a, 0xb1, 0x5f, 0xf9, 0x0b, 0x24, - 0x7c, 0x3e, 0x0c, 0xc5, 0x39, 0xaf, 0x52, 0x27, 0xe8, 0x5a, 0xf6, 0xd0, 0x3b, 0x72, 0xe9, 0x89, - 0x3c, 0x36, 0xea, 0x00, 0xac, 0x73, 0x1a, 0xeb, 0x76, 0x34, 0x76, 0xdf, 0x76, 0x60, 0x7c, 0xae, - 0xe1, 0x93, 0x20, 0x99, 0x23, 0x51, 0xc2, 0x06, 0xae, 0x06, 0x13, 0x15, 0x05, 0x39, 0xcc, 0xd0, - 0xb1, 0xd9, 0x3a, 0x97, 0x21, 0x81, 0x3b, 0x88, 0xa2, 0x2a, 0x9c, 0xe0, 0xb0, 0x74, 0x55, 0x1c, - 0x68, 0xfc, 0x98, 0x75, 0x74, 0xce, 0xa4, 0x80, 0xb3, 0x24, 0xdd, 0x9f, 0x38, 0x70, 0x6e, 0xae, - 0xd1, 0x8e, 0x13, 0x12, 0xdd, 0x10, 0xd2, 0x48, 0xaa, 0xb7, 0xe8, 0xa3, 0x30, 0xd4, 0x94, 0x1e, - 0x5b, 0xe7, 0x2e, 0x13, 0x98, 0xc9, 0x33, 0x8a, 0x4d, 0x1b, 0xb3, 0xb6, 0xf9, 0x32, 0xa9, 0x24, - 0xab, 0x24, 0xf1, 0xd2, 0xf0, 0x82, 0x14, 0x86, 0x15, 0x55, 0xd4, 0x82, 0xfe, 0xb8, 0x45, 0x2a, - 0xf6, 0xa2, 0xbb, 0x64, 0x1f, 0xca, 0x2d, 0x52, 0x49, 0xe5, 0x3a, 0xf3, 0x35, 0x32, 0x4e, 0xee, - 0xff, 0x72, 0xe0, 0x7c, 0x97, 0xfe, 0xae, 0xf8, 0x71, 0x82, 0x5e, 0xea, 0xe8, 0xf3, 0x74, 0x6f, - 0x7d, 0xa6, 0xb5, 0x59, 0x8f, 0x95, 0x40, 0x90, 0x10, 0xad, 0xbf, 0x1f, 0x83, 0xa2, 0x9f, 0x90, - 0xa6, 0x34, 0x43, 0x5b, 0x30, 0x18, 0x75, 0xe9, 0xcb, 0xec, 0x98, 0x8c, 0xf1, 0x5b, 0xa2, 0xfc, - 0x30, 0x67, 0xeb, 0x6e, 0xc3, 0xc0, 0x5c, 0xd8, 0x68, 0x37, 0x83, 0xde, 0x22, 0x65, 0x92, 0xdd, - 0x16, 0xc9, 0xee, 0x91, 0x4c, 0xfd, 0x67, 0x25, 0xd2, 0x70, 0xd4, 0x97, 0x6f, 0x38, 0x72, 0xff, - 0xb9, 0x03, 0x74, 0x55, 0x55, 0x7d, 0xe1, 0x49, 0xe4, 0xe4, 0x38, 0xc3, 0x87, 0x75, 0x72, 0x77, - 0xf6, 0xa6, 0xc6, 0x14, 0xa2, 0x46, 0xff, 0xc3, 0x30, 0x10, 0xb3, 0x23, 0xb9, 0x68, 0xc3, 0x82, - 0xd4, 0x9f, 0xf9, 0x41, 0xfd, 0xce, 0xde, 0x54, 0x4f, 0x61, 0x9b, 0xd3, 0x8a, 0xb6, 0x70, 0x7a, - 0x0a, 0xaa, 0x54, 0xe1, 0x6b, 0x92, 0x38, 0xf6, 0x6a, 0xf2, 0x84, 0xa7, 0x14, 0xbe, 0x55, 0x0e, - 0xc6, 0xb2, 0xdc, 0xfd, 0x8a, 0x03, 0x63, 0x6a, 0xf3, 0xa2, 0xea, 0x3b, 0xba, 0xaa, 0x6f, 0x73, - 0x7c, 0xa6, 0x3c, 0xdc, 0x45, 0xe2, 0x88, 0x8d, 0x7c, 0xff, 0x5d, 0xf0, 0xdd, 0x30, 0x5a, 0x25, - 0x2d, 0x12, 0x54, 0x49, 0x50, 0xa1, 0xc7, 0x6f, 0x3a, 0x43, 0x86, 0x67, 0x27, 0xe8, 0x79, 0x73, - 0x5e, 0x83, 0x63, 0x03, 0xcb, 0xfd, 0x96, 0x03, 0x0f, 0x2a, 0x72, 0x65, 0x92, 0x60, 0x92, 0x44, - 0xbb, 0x2a, 0x4c, 0xf3, 0x60, 0xbb, 0xd5, 0x0d, 0xaa, 0xff, 0x26, 0x11, 0x67, 0x7e, 0xb8, 0xed, - 0x6a, 0x84, 0x6b, 0xcb, 0x8c, 0x08, 0x96, 0xd4, 0xdc, 0x5f, 0xed, 0x83, 0xd3, 0x7a, 0x23, 0x95, - 0x80, 0xf9, 0xa4, 0x03, 0xa0, 0x46, 0x80, 0x6e, 0xc8, 0x7d, 0x76, 0x7c, 0x57, 0xc6, 0x97, 0x4a, - 0x45, 0x90, 0x02, 0xc7, 0x58, 0x63, 0x8b, 0x5e, 0x80, 0xd1, 0x1d, 0xba, 0x28, 0xc8, 0x2a, 0x55, - 0x17, 0xe2, 0x52, 0x1f, 0x6b, 0xc6, 0x54, 0xde, 0xc7, 0xbc, 0x9e, 0xe2, 0xa5, 0xe6, 0x00, 0x0d, - 0x18, 0x63, 0x83, 0x14, 0x3d, 0xe9, 0x8c, 0x45, 0xfa, 0x27, 0x11, 0x36, 0xf1, 0x0f, 0x59, 0xec, - 0x63, 0xf6, 0xab, 0xcf, 0x9e, 0xbc, 0xbd, 0x37, 0x35, 0x66, 0x80, 0xb0, 0xd9, 0x08, 0xf7, 0x05, - 0x60, 0x63, 0xe1, 0x07, 0x6d, 0xb2, 0x16, 0xa0, 0x47, 0xa5, 0x8d, 0x8e, 0xfb, 0x55, 0x94, 0xe4, - 0xd0, 0xed, 0x74, 0xf4, 0x2c, 0xbb, 0xe5, 0xf9, 0x0d, 0x16, 0xbe, 0x48, 0xb1, 0xd4, 0x59, 0x76, - 0x81, 0x41, 0xb1, 0x28, 0x75, 0xa7, 0x61, 0x70, 0x8e, 0xf6, 0x9d, 0x44, 0x94, 0xae, 0x1e, 0x75, - 0x3c, 0x66, 0x44, 0x1d, 0xcb, 0xe8, 0xe2, 0x0d, 0x38, 0x33, 0x17, 0x11, 0x2f, 0x21, 0xe5, 0x67, - 0x66, 0xdb, 0x95, 0x6d, 0x92, 0xf0, 0xd0, 0xae, 0x18, 0xbd, 0x0f, 0xc6, 0x42, 0xb6, 0x65, 0xac, - 0x84, 0x95, 0x6d, 0x3f, 0xa8, 0x09, 0x93, 0xeb, 0x19, 0x41, 0x65, 0x6c, 0x4d, 0x2f, 0xc4, 0x26, - 0xae, 0xfb, 0xef, 0x0b, 0x30, 0x3a, 0x17, 0x85, 0x81, 0x14, 0x8b, 0xc7, 0xb0, 0x95, 0x25, 0xc6, - 0x56, 0x66, 0xc1, 0xdd, 0xa9, 0xb7, 0xbf, 0xdb, 0x76, 0x86, 0x5e, 0x57, 0x22, 0xb2, 0xcf, 0xd6, - 0x11, 0xc4, 0xe0, 0xcb, 0x68, 0xa7, 0x1f, 0xdb, 0x14, 0xa0, 0xee, 0x7f, 0x70, 0x60, 0x42, 0x47, - 0x3f, 0x86, 0x1d, 0x34, 0x36, 0x77, 0xd0, 0xab, 0x76, 0xfb, 0xdb, 0x65, 0xdb, 0x7c, 0x7b, 0xd0, - 0xec, 0x27, 0xf3, 0x75, 0x7f, 0xcd, 0x81, 0xd1, 0x9b, 0x1a, 0x40, 0x74, 0xd6, 0xb6, 0x12, 0xf3, - 0x0e, 0x29, 0x66, 0x74, 0xe8, 0x9d, 0xcc, 0x6f, 0x6c, 0xb4, 0x84, 0xca, 0xfd, 0xb8, 0x52, 0x27, - 0xd5, 0x76, 0x43, 0x6e, 0xdf, 0x6a, 0x48, 0xcb, 0x02, 0x8e, 0x15, 0x06, 0x7a, 0x09, 0x4e, 0x56, - 0xc2, 0xa0, 0xd2, 0x8e, 0x22, 0x12, 0x54, 0x76, 0xd7, 0xd9, 0x1d, 0x09, 0xb1, 0x21, 0x4e, 0x8b, - 0x6a, 0x27, 0xe7, 0xb2, 0x08, 0x77, 0xf2, 0x80, 0xb8, 0x93, 0x10, 0x77, 0x16, 0xc4, 0x74, 0xcb, - 0x12, 0x07, 0x2e, 0xcd, 0x59, 0xc0, 0xc0, 0x58, 0x96, 0xa3, 0x6b, 0x70, 0x2e, 0x4e, 0xbc, 0x28, - 0xf1, 0x83, 0xda, 0x3c, 0xf1, 0xaa, 0x0d, 0x3f, 0xa0, 0x47, 0x89, 0x30, 0xa8, 0x72, 0x57, 0x62, - 0xdf, 0xec, 0xf9, 0xdb, 0x7b, 0x53, 0xe7, 0xca, 0xf9, 0x28, 0xb8, 0x5b, 0x5d, 0xf4, 0x61, 0x98, - 0x14, 0xee, 0x88, 0xad, 0x76, 0xe3, 0xb9, 0x70, 0x33, 0xbe, 0xe2, 0xc7, 0xf4, 0x1c, 0xbf, 0xe2, - 0x37, 0xfd, 0x84, 0x39, 0x0c, 0x8b, 0xb3, 0x17, 0x6e, 0xef, 0x4d, 0x4d, 0x96, 0xbb, 0x62, 0xe1, - 0x7d, 0x28, 0x20, 0x0c, 0x67, 0xb9, 0xf0, 0xeb, 0xa0, 0x3d, 0xc8, 0x68, 0x4f, 0xde, 0xde, 0x9b, - 0x3a, 0xbb, 0x90, 0x8b, 0x81, 0xbb, 0xd4, 0xa4, 0x5f, 0x30, 0xf1, 0x9b, 0xe4, 0xd5, 0x30, 0x20, - 0x2c, 0x50, 0x45, 0xfb, 0x82, 0x1b, 0x02, 0x8e, 0x15, 0x06, 0x7a, 0x39, 0x9d, 0x89, 0x74, 0xb9, - 0x88, 0x80, 0x93, 0x83, 0x4b, 0x38, 0x76, 0x34, 0xb9, 0xa1, 0x51, 0x62, 0x91, 0x94, 0x06, 0x6d, - 0xf4, 0x29, 0x07, 0x46, 0xe3, 0x24, 0x54, 0xf7, 0x1a, 0x44, 0xc4, 0x89, 0x85, 0x69, 0x5f, 0xd6, - 0xa8, 0x72, 0xc5, 0x47, 0x87, 0x60, 0x83, 0x2b, 0x7a, 0x27, 0x0c, 0xcb, 0x09, 0x1c, 0x97, 0x46, - 0x98, 0xae, 0xc4, 0x8e, 0x71, 0x72, 0x7e, 0xc7, 0x38, 0x2d, 0xa7, 0xaa, 0xec, 0xcd, 0x3a, 0x09, - 0x58, 0xcc, 0xad, 0xa6, 0xca, 0xde, 0xa8, 0x93, 0x00, 0xb3, 0x12, 0xf7, 0xc7, 0x7d, 0x80, 0x3a, - 0x05, 0x1f, 0x5a, 0x86, 0x01, 0xaf, 0x92, 0xf8, 0x3b, 0x32, 0xde, 0xf0, 0xd1, 0x3c, 0xa5, 0x80, - 0x0f, 0x20, 0x26, 0x5b, 0x84, 0xce, 0x7b, 0x92, 0x4a, 0xcb, 0x19, 0x56, 0x15, 0x0b, 0x12, 0x28, - 0x84, 0x93, 0x0d, 0x2f, 0x4e, 0x64, 0x0b, 0xab, 0xf4, 0x43, 0x8a, 0xed, 0xe2, 0xe7, 0x7b, 0xfb, - 0x54, 0xb4, 0xc6, 0xec, 0x19, 0xba, 0x1e, 0x57, 0xb2, 0x84, 0x70, 0x27, 0x6d, 0xf4, 0x71, 0xa6, - 0x5d, 0x71, 0xd5, 0x57, 0xaa, 0x35, 0xcb, 0x56, 0x34, 0x0f, 0x4e, 0xd3, 0xd0, 0xac, 0x04, 0x1b, - 0xac, 0xb1, 0x44, 0x17, 0x61, 0x98, 0xad, 0x1b, 0x52, 0x25, 0x7c, 0xf5, 0xf7, 0xa5, 0x4a, 0x70, - 0x59, 0x16, 0xe0, 0x14, 0x47, 0xd3, 0x32, 0xf8, 0x82, 0xef, 0xa2, 0x65, 0xa0, 0x67, 0xa1, 0xd8, - 0xaa, 0x7b, 0xb1, 0x8c, 0x61, 0x77, 0xa5, 0xd4, 0x5e, 0xa7, 0x40, 0x26, 0x9a, 0xb4, 0x6f, 0xc9, - 0x80, 0x98, 0x57, 0x70, 0xff, 0x05, 0xc0, 0xe0, 0xfc, 0xcc, 0xe2, 0x86, 0x17, 0x6f, 0xf7, 0x70, - 0x06, 0xa2, 0xcb, 0x50, 0x28, 0xab, 0x59, 0x41, 0x2a, 0x95, 0x58, 0xac, 0x30, 0x50, 0x00, 0x03, - 0x7e, 0x40, 0x25, 0x4f, 0x69, 0xdc, 0x96, 0x9f, 0x41, 0x9d, 0xe7, 0x98, 0x21, 0x68, 0x89, 0x51, - 0xc7, 0x82, 0x0b, 0x7a, 0x1d, 0x86, 0x3d, 0x79, 0x85, 0x48, 0xec, 0xff, 0xcb, 0x36, 0x0c, 0xe8, - 0x82, 0xa4, 0x1e, 0xc2, 0x24, 0x40, 0x38, 0x65, 0x88, 0x3e, 0xe1, 0xc0, 0x88, 0xec, 0x3a, 0x26, - 0x5b, 0xc2, 0xb7, 0xbd, 0x6a, 0xaf, 0xcf, 0x98, 0x6c, 0xf1, 0xf8, 0x16, 0x0d, 0x80, 0x75, 0x96, - 0x1d, 0x67, 0xa6, 0x62, 0x2f, 0x67, 0x26, 0x74, 0x13, 0x86, 0x6f, 0xfa, 0x49, 0x9d, 0xed, 0xf0, - 0xc2, 0xa7, 0xb6, 0x70, 0xef, 0xad, 0xa6, 0xe4, 0xd2, 0x11, 0xbb, 0x21, 0x19, 0xe0, 0x94, 0x17, - 0x5d, 0x0e, 0xf4, 0x07, 0xbb, 0x82, 0xc5, 0xf6, 0x86, 0x61, 0xb3, 0x02, 0x2b, 0xc0, 0x29, 0x0e, - 0x1d, 0xe2, 0x51, 0xfa, 0xab, 0x4c, 0x5e, 0x69, 0x53, 0xd1, 0x22, 0x62, 0x16, 0x2d, 0xcc, 0x2b, - 0x49, 0x91, 0x0f, 0xd6, 0x0d, 0x8d, 0x07, 0x36, 0x38, 0x2a, 0xd1, 0x39, 0xdc, 0x4d, 0x74, 0xa2, - 0xd7, 0xf9, 0x19, 0x8e, 0x1f, 0x26, 0xc4, 0x6e, 0xb0, 0x62, 0xe7, 0x7c, 0xc3, 0x69, 0xf2, 0x6b, - 0x0d, 0xe9, 0x6f, 0xac, 0xf1, 0xa3, 0x12, 0x23, 0x0c, 0x2e, 0xdf, 0xf2, 0x13, 0x71, 0x19, 0x43, - 0x49, 0x8c, 0x35, 0x06, 0xc5, 0xa2, 0x94, 0xc7, 0x6e, 0xd0, 0x49, 0x10, 0x8b, 0x5d, 0x40, 0x8b, - 0xdd, 0x60, 0x60, 0x2c, 0xcb, 0xd1, 0xdf, 0x75, 0xa0, 0x58, 0x0f, 0xc3, 0xed, 0xb8, 0x34, 0xc6, - 0x26, 0x87, 0x05, 0x9d, 0x5a, 0x48, 0x9c, 0xe9, 0x2b, 0x94, 0xac, 0x79, 0xbd, 0xac, 0xc8, 0x60, - 0x77, 0xf6, 0xa6, 0xc6, 0x57, 0xfc, 0x2d, 0x52, 0xd9, 0xad, 0x34, 0x08, 0x83, 0xbc, 0xf9, 0xb6, - 0x06, 0xb9, 0xbc, 0x43, 0x82, 0x04, 0xf3, 0x56, 0x4d, 0x7e, 0xde, 0x01, 0x48, 0x09, 0xe5, 0x38, - 0x49, 0x89, 0x19, 0x56, 0x60, 0xe1, 0x40, 0x6d, 0x34, 0x4d, 0xf7, 0xba, 0xfe, 0x2b, 0x07, 0x46, - 0x68, 0xe7, 0xa4, 0x08, 0x7c, 0x1c, 0x06, 0x12, 0x2f, 0xaa, 0x11, 0xe9, 0x28, 0x50, 0x9f, 0x63, - 0x83, 0x41, 0xb1, 0x28, 0x45, 0x01, 0x14, 0x13, 0x2f, 0xde, 0x96, 0x6a, 0xfc, 0x92, 0xb5, 0x21, - 0x4e, 0x35, 0x78, 0xfa, 0x2b, 0xc6, 0x9c, 0x0d, 0x7a, 0x02, 0x86, 0xe8, 0xd6, 0xb1, 0xe0, 0xc5, - 0x32, 0x76, 0x67, 0x94, 0x0a, 0xf1, 0x05, 0x01, 0xc3, 0xaa, 0xd4, 0xfd, 0xf5, 0x02, 0xf4, 0xcf, - 0xf3, 0x03, 0xdd, 0x40, 0x1c, 0xb6, 0xa3, 0x0a, 0x11, 0x8a, 0xbd, 0x85, 0x39, 0x4d, 0xe9, 0x96, - 0x19, 0x4d, 0xed, 0x48, 0xc5, 0x7e, 0x63, 0xc1, 0x0b, 0x7d, 0xd9, 0x81, 0xf1, 0x24, 0xf2, 0x82, - 0x78, 0x8b, 0xb9, 0x64, 0xfc, 0x30, 0x10, 0x43, 0x64, 0x61, 0x16, 0x6e, 0x18, 0x74, 0xcb, 0x09, - 0x69, 0xa5, 0x9e, 0x21, 0xb3, 0x0c, 0x67, 0xda, 0xe0, 0xfe, 0x86, 0x03, 0x90, 0xb6, 0x1e, 0x7d, - 0xce, 0x81, 0x31, 0x4f, 0x8f, 0x19, 0x15, 0x63, 0xb4, 0x66, 0xcf, 0x7f, 0xcb, 0xc8, 0x72, 0x5b, - 0x86, 0x01, 0xc2, 0x26, 0x63, 0xf7, 0x3d, 0x50, 0x64, 0xab, 0x83, 0x1d, 0x7a, 0x84, 0xed, 0x3b, - 0x6b, 0xec, 0x92, 0x36, 0x71, 0xac, 0x30, 0xdc, 0x97, 0x60, 0xfc, 0xf2, 0x2d, 0x52, 0x69, 0x27, - 0x61, 0xc4, 0x2d, 0xff, 0x5d, 0xee, 0x08, 0x39, 0x87, 0xba, 0x23, 0xf4, 0x5d, 0x07, 0x46, 0xb4, - 0x00, 0x42, 0xba, 0x53, 0xd7, 0xe6, 0xca, 0xdc, 0xc0, 0x21, 0x86, 0x6a, 0xd9, 0x4a, 0x88, 0x22, - 0x27, 0x99, 0x6e, 0x23, 0x0a, 0x84, 0x53, 0x86, 0x77, 0x09, 0xf0, 0x73, 0x7f, 0xdf, 0x81, 0x33, - 0xb9, 0xd1, 0x8e, 0xf7, 0xb9, 0xd9, 0x86, 0x93, 0xbd, 0xd0, 0x83, 0x93, 0xfd, 0xb7, 0x1d, 0x48, - 0x29, 0x51, 0x51, 0xb4, 0x99, 0xb6, 0x5c, 0x13, 0x45, 0x82, 0x93, 0x28, 0x45, 0xaf, 0xc3, 0x39, - 0xf3, 0x0b, 0x1e, 0xd2, 0xdf, 0xc2, 0x0f, 0xa7, 0xf9, 0x94, 0x70, 0x37, 0x16, 0xee, 0xd7, 0x1d, - 0x28, 0x2e, 0x7a, 0xed, 0x1a, 0xe9, 0xc9, 0x5c, 0x46, 0xe5, 0x58, 0x44, 0xbc, 0x46, 0x22, 0x8f, - 0x0e, 0x42, 0x8e, 0x61, 0x01, 0xc3, 0xaa, 0x14, 0xcd, 0xc0, 0x70, 0xd8, 0x22, 0x86, 0x8f, 0xf0, - 0x51, 0x39, 0x7a, 0x6b, 0xb2, 0x80, 0x6e, 0x3b, 0x8c, 0xbb, 0x82, 0xe0, 0xb4, 0x96, 0xfb, 0x8d, - 0x01, 0x18, 0xd1, 0xee, 0xc5, 0x50, 0x5d, 0x20, 0x22, 0xad, 0x30, 0xab, 0x2f, 0xd3, 0x09, 0x83, - 0x59, 0x09, 0x5d, 0x83, 0x11, 0xd9, 0xf1, 0x63, 0x2e, 0xb6, 0x8c, 0x35, 0x88, 0x05, 0x1c, 0x2b, - 0x0c, 0x34, 0x05, 0xc5, 0x2a, 0x69, 0x25, 0x75, 0xd6, 0xbc, 0x7e, 0x1e, 0x1c, 0x38, 0x4f, 0x01, - 0x98, 0xc3, 0x29, 0xc2, 0x16, 0x49, 0x2a, 0x75, 0x66, 0x19, 0x16, 0xd1, 0x83, 0x0b, 0x14, 0x80, - 0x39, 0x3c, 0xc7, 0x8b, 0x59, 0x3c, 0x7a, 0x2f, 0xe6, 0x80, 0x65, 0x2f, 0x26, 0x6a, 0xc1, 0xa9, - 0x38, 0xae, 0xaf, 0x47, 0xfe, 0x8e, 0x97, 0x90, 0x74, 0xf6, 0x0d, 0x1e, 0x84, 0xcf, 0x39, 0x76, - 0x53, 0xbd, 0x7c, 0x25, 0x4b, 0x05, 0xe7, 0x91, 0x46, 0x65, 0x38, 0xe3, 0x07, 0x31, 0xa9, 0xb4, - 0x23, 0xb2, 0x54, 0x0b, 0xc2, 0x88, 0x5c, 0x09, 0x63, 0x4a, 0x4e, 0xdc, 0xb3, 0x55, 0xf1, 0xb4, - 0x4b, 0x79, 0x48, 0x38, 0xbf, 0x2e, 0x5a, 0x84, 0x93, 0x55, 0x3f, 0xf6, 0x36, 0x1b, 0xa4, 0xdc, - 0xde, 0x6c, 0x86, 0xfc, 0x68, 0x3e, 0xcc, 0x08, 0x3e, 0x28, 0xed, 0x48, 0xf3, 0x59, 0x04, 0xdc, - 0x59, 0x07, 0x3d, 0x0b, 0xa3, 0xb1, 0x1f, 0xd4, 0x1a, 0x64, 0x36, 0xf2, 0x82, 0x4a, 0x5d, 0x5c, - 0xd0, 0x55, 0xf6, 0xf6, 0xb2, 0x56, 0x86, 0x0d, 0x4c, 0xb6, 0xe6, 0x79, 0x9d, 0x8c, 0x36, 0x28, - 0xb0, 0x45, 0x29, 0x9a, 0x81, 0x13, 0xb2, 0x0f, 0xe5, 0x6d, 0xbf, 0xb5, 0xb1, 0x52, 0x66, 0x5a, - 0xe1, 0x50, 0x1a, 0x2d, 0xb4, 0x64, 0x16, 0xe3, 0x2c, 0xbe, 0xfb, 0x43, 0x07, 0x46, 0xf5, 0x70, - 0x78, 0xaa, 0xac, 0x43, 0x7d, 0x7e, 0xa1, 0xcc, 0xb7, 0x13, 0x7b, 0x4a, 0xc3, 0x15, 0x45, 0x33, - 0x3d, 0x6f, 0xa7, 0x30, 0xac, 0xf1, 0xec, 0xe1, 0x72, 0xfb, 0xa3, 0x50, 0xdc, 0x0a, 0xa9, 0x4e, - 0xd3, 0x67, 0xda, 0xfa, 0x17, 0x28, 0x10, 0xf3, 0x32, 0xf7, 0xbf, 0x39, 0x70, 0x36, 0x3f, 0xd2, - 0xff, 0x67, 0xa1, 0x93, 0x97, 0x00, 0x68, 0x57, 0x8c, 0x7d, 0x41, 0x4b, 0x6f, 0x21, 0x4b, 0xb0, - 0x86, 0xd5, 0x5b, 0xb7, 0xff, 0x65, 0x01, 0x34, 0x9e, 0xe8, 0x0b, 0x0e, 0x8c, 0x51, 0xb6, 0xcb, - 0xd1, 0xa6, 0xd1, 0xdb, 0x35, 0x3b, 0xbd, 0x55, 0x64, 0x53, 0x97, 0x86, 0x01, 0xc6, 0x26, 0x73, - 0xf4, 0x4e, 0x18, 0xf6, 0xaa, 0xd5, 0x88, 0xc4, 0xb1, 0x72, 0x0e, 0x32, 0x83, 0xd7, 0x8c, 0x04, - 0xe2, 0xb4, 0x9c, 0xca, 0xe1, 0x7a, 0x75, 0x2b, 0xa6, 0xa2, 0x4d, 0xc8, 0x7e, 0x25, 0x87, 0x29, - 0x13, 0x0a, 0xc7, 0x0a, 0x03, 0x5d, 0x87, 0xb3, 0x55, 0x2f, 0xf1, 0xb8, 0x0a, 0x48, 0xa2, 0xf5, - 0x28, 0x4c, 0x48, 0x85, 0xed, 0x1b, 0x3c, 0x88, 0xf5, 0x82, 0xa8, 0x7b, 0x76, 0x3e, 0x17, 0x0b, - 0x77, 0xa9, 0xed, 0xfe, 0x4a, 0x3f, 0x98, 0x7d, 0x42, 0x55, 0x38, 0xb1, 0x1d, 0x6d, 0xce, 0xb1, - 0x98, 0x8d, 0xc3, 0xc4, 0x4e, 0xb0, 0x98, 0x86, 0x65, 0x93, 0x02, 0xce, 0x92, 0x14, 0x5c, 0x96, - 0xc9, 0x6e, 0xe2, 0x6d, 0x1e, 0x3a, 0x72, 0x62, 0xd9, 0xa4, 0x80, 0xb3, 0x24, 0xd1, 0x7b, 0x60, - 0x64, 0x3b, 0xda, 0x94, 0xbb, 0x47, 0x36, 0x0c, 0x67, 0x39, 0x2d, 0xc2, 0x3a, 0x1e, 0xfd, 0x34, - 0xdb, 0xd1, 0x26, 0xdd, 0xb0, 0x65, 0x12, 0x09, 0xf5, 0x69, 0x96, 0x05, 0x1c, 0x2b, 0x0c, 0xd4, - 0x02, 0xb4, 0x2d, 0x47, 0x4f, 0x45, 0xa8, 0x88, 0x4d, 0xae, 0xf7, 0x00, 0x17, 0x76, 0x35, 0x60, - 0xb9, 0x83, 0x0e, 0xce, 0xa1, 0x8d, 0x5e, 0x80, 0x73, 0xdb, 0xd1, 0xa6, 0xd0, 0x63, 0xd6, 0x23, - 0x3f, 0xa8, 0xf8, 0x2d, 0x23, 0x61, 0xc4, 0x94, 0x68, 0xee, 0xb9, 0xe5, 0x7c, 0x34, 0xdc, 0xad, - 0xbe, 0xfb, 0x3b, 0xfd, 0xc0, 0xae, 0xba, 0x52, 0x31, 0xdd, 0x24, 0x49, 0x3d, 0xac, 0x66, 0x55, - 0xb3, 0x55, 0x06, 0xc5, 0xa2, 0x54, 0x06, 0xc0, 0x16, 0xba, 0x04, 0xc0, 0xde, 0x84, 0xc1, 0x3a, - 0xf1, 0xaa, 0x24, 0x92, 0xc6, 0xcd, 0x15, 0x3b, 0x97, 0x73, 0xaf, 0x30, 0xa2, 0xa9, 0x85, 0x80, - 0xff, 0x8e, 0xb1, 0xe4, 0x86, 0xde, 0x0b, 0xe3, 0x54, 0xc7, 0x0a, 0xdb, 0x89, 0xf4, 0x4f, 0x70, - 0xe3, 0x26, 0xdb, 0xec, 0x37, 0x8c, 0x12, 0x9c, 0xc1, 0x44, 0xf3, 0x30, 0x21, 0x7c, 0x09, 0xca, - 0x68, 0x2a, 0x06, 0x56, 0x65, 0xf2, 0x28, 0x67, 0xca, 0x71, 0x47, 0x0d, 0x16, 0xc0, 0x18, 0x56, - 0xb9, 0x3b, 0x59, 0x0f, 0x60, 0x0c, 0xab, 0xbb, 0x98, 0x95, 0xa0, 0x57, 0x61, 0x88, 0xfe, 0x5d, - 0x88, 0xc2, 0xa6, 0x30, 0x1b, 0xad, 0xdb, 0x19, 0x1d, 0xca, 0x43, 0x1c, 0x62, 0x99, 0xee, 0x39, - 0x2b, 0xb8, 0x60, 0xc5, 0x8f, 0x1e, 0xa5, 0xf4, 0xed, 0xf2, 0x3a, 0x89, 0xfc, 0xad, 0x5d, 0xa6, - 0xcf, 0x0c, 0xa5, 0x47, 0xa9, 0xa5, 0x0e, 0x0c, 0x9c, 0x53, 0xcb, 0xfd, 0x42, 0x01, 0x46, 0xf5, - 0x1b, 0xd3, 0x77, 0x8b, 0x8a, 0x8e, 0xd3, 0x49, 0xc1, 0x0f, 0xce, 0x57, 0x2c, 0x74, 0xfb, 0x6e, - 0x13, 0xa2, 0x0e, 0xfd, 0x5e, 0x5b, 0x28, 0xb2, 0x56, 0xec, 0x73, 0xac, 0xc7, 0xed, 0xa4, 0xce, - 0xaf, 0xd6, 0xb1, 0x78, 0x65, 0xc6, 0xc1, 0xfd, 0x74, 0x1f, 0x0c, 0xc9, 0x42, 0xf4, 0x29, 0x07, - 0x20, 0x8d, 0x1b, 0x13, 0xa2, 0x74, 0xdd, 0x46, 0x50, 0x91, 0x1e, 0xf2, 0xa6, 0x99, 0xf9, 0x15, - 0x1c, 0x6b, 0x7c, 0x51, 0x02, 0x03, 0x21, 0x6d, 0xdc, 0x25, 0x7b, 0xb7, 0xfe, 0xd7, 0x28, 0xe3, - 0x4b, 0x8c, 0x7b, 0x6a, 0xd1, 0x63, 0x30, 0x2c, 0x78, 0xd1, 0xc3, 0xe9, 0xa6, 0x0c, 0x67, 0xb4, - 0x67, 0xfd, 0x56, 0x11, 0x92, 0xe9, 0x59, 0x53, 0x81, 0x70, 0xca, 0xd0, 0x7d, 0x1a, 0xc6, 0xcd, - 0xc5, 0x40, 0x0f, 0x2b, 0x9b, 0xbb, 0x09, 0xe1, 0xa6, 0x90, 0x51, 0x7e, 0x58, 0x99, 0xa5, 0x00, - 0xcc, 0xe1, 0xee, 0x0f, 0x1c, 0x80, 0x54, 0xbc, 0xf4, 0xe0, 0x7d, 0x78, 0x54, 0xb7, 0xe3, 0x75, - 0x3b, 0x11, 0x7e, 0x1c, 0x86, 0xd9, 0x3f, 0x6c, 0xa1, 0xf7, 0xd9, 0x0a, 0x3e, 0x48, 0xdb, 0x29, - 0x96, 0x3a, 0xd3, 0x35, 0xae, 0x4b, 0x46, 0x38, 0xe5, 0xe9, 0x86, 0x30, 0x91, 0xc5, 0x46, 0x1f, - 0x82, 0xd1, 0x58, 0x6e, 0xab, 0xe9, 0xfd, 0xbf, 0x1e, 0xb7, 0x5f, 0xee, 0xfa, 0xd3, 0xaa, 0x63, - 0x83, 0x98, 0xbb, 0x06, 0x03, 0x56, 0x87, 0xd0, 0xfd, 0x8e, 0x03, 0xc3, 0xcc, 0xfb, 0x5a, 0x8b, - 0xbc, 0x66, 0x5a, 0xa5, 0x6f, 0x9f, 0x51, 0x8f, 0x61, 0x90, 0x9b, 0x0f, 0x64, 0xd4, 0x92, 0x05, - 0x29, 0xc3, 0x93, 0xf5, 0xa5, 0x52, 0x86, 0xdb, 0x29, 0x62, 0x2c, 0x39, 0xb9, 0x9f, 0x29, 0xc0, - 0xc0, 0x52, 0xd0, 0x6a, 0xff, 0xa5, 0x4f, 0x18, 0xb7, 0x0a, 0xfd, 0x4b, 0x09, 0x69, 0x9a, 0x79, - 0x0d, 0x47, 0x67, 0x1f, 0xd3, 0x73, 0x1a, 0x96, 0xcc, 0x9c, 0x86, 0xd8, 0xbb, 0x29, 0x83, 0xfa, - 0x84, 0xf9, 0x3a, 0xbd, 0x03, 0xf9, 0x14, 0x0c, 0xaf, 0x78, 0x9b, 0xa4, 0xb1, 0x4c, 0x76, 0xd9, - 0x8d, 0x45, 0x1e, 0x60, 0xe2, 0xa4, 0x36, 0x07, 0x23, 0x18, 0x64, 0x1e, 0xc6, 0x19, 0xb6, 0x5a, - 0x0c, 0xf4, 0x44, 0x42, 0xd2, 0xa4, 0x50, 0x8e, 0x79, 0x22, 0xd1, 0x12, 0x42, 0x69, 0x58, 0xee, - 0x34, 0x8c, 0xa4, 0x54, 0x7a, 0xe0, 0xfa, 0xd3, 0x02, 0x8c, 0x19, 0x56, 0x78, 0xc3, 0x37, 0xe9, - 0xdc, 0xd5, 0x37, 0x69, 0xf8, 0x0a, 0x0b, 0xf7, 0xdb, 0x57, 0xd8, 0x77, 0xfc, 0xbe, 0x42, 0xf3, - 0x23, 0xf5, 0xf7, 0xf4, 0x91, 0x1a, 0xd0, 0xbf, 0xe2, 0x07, 0xdb, 0xbd, 0xc9, 0x99, 0xb8, 0x12, - 0xb6, 0x3a, 0xe4, 0x4c, 0x99, 0x02, 0x31, 0x2f, 0x93, 0x9a, 0x4b, 0x5f, 0xbe, 0xe6, 0xe2, 0x7e, - 0xca, 0x81, 0xd1, 0x55, 0x2f, 0xf0, 0xb7, 0x48, 0x9c, 0xb0, 0x79, 0x95, 0x1c, 0xe9, 0xcd, 0xb5, - 0xd1, 0x2e, 0x39, 0x18, 0xde, 0x74, 0xe0, 0xe4, 0x2a, 0x69, 0x86, 0xfe, 0xab, 0x5e, 0x1a, 0x33, - 0x4b, 0xdb, 0x5e, 0xf7, 0x13, 0x11, 0x22, 0xa8, 0xda, 0x7e, 0xc5, 0x4f, 0x30, 0x85, 0xdf, 0xc5, - 0xc4, 0xcc, 0xee, 0x84, 0xd0, 0x03, 0x9a, 0x76, 0x9b, 0x32, 0x8d, 0x86, 0x95, 0x05, 0x38, 0xc5, - 0x71, 0x7f, 0xd7, 0x81, 0x41, 0xde, 0x08, 0x15, 0x66, 0xec, 0x74, 0xa1, 0x5d, 0x87, 0x22, 0xab, - 0x27, 0x66, 0xf5, 0xa2, 0x05, 0xf5, 0x87, 0x92, 0xe3, 0x6b, 0x90, 0xfd, 0x8b, 0x39, 0x03, 0x76, - 0x6c, 0xf1, 0x6e, 0xcd, 0xa8, 0x70, 0xe1, 0xf4, 0xd8, 0xc2, 0xa0, 0x58, 0x94, 0xba, 0xdf, 0xe8, - 0x83, 0x21, 0x95, 0x7a, 0x8c, 0x25, 0x86, 0x08, 0x82, 0x30, 0xf1, 0x78, 0x18, 0x06, 0x97, 0xd5, - 0x1f, 0xb2, 0x97, 0xfa, 0x6c, 0x7a, 0x26, 0xa5, 0xce, 0x5d, 0x8b, 0xea, 0x10, 0xaa, 0x95, 0x60, - 0xbd, 0x11, 0xe8, 0x63, 0x30, 0xd0, 0xa0, 0xd2, 0x47, 0x8a, 0xee, 0xeb, 0x16, 0x9b, 0xc3, 0xc4, - 0x9a, 0x68, 0x89, 0x1a, 0x21, 0x0e, 0xc4, 0x82, 0xeb, 0xe4, 0xfb, 0x61, 0x22, 0xdb, 0xea, 0xbb, - 0x5d, 0xf6, 0x1c, 0xd6, 0xaf, 0x8a, 0xfe, 0x55, 0x21, 0x3d, 0x0f, 0x5e, 0xd5, 0x7d, 0x1e, 0x46, - 0x56, 0x49, 0x12, 0xf9, 0x15, 0x46, 0xe0, 0x6e, 0x93, 0xab, 0x27, 0xfd, 0xe1, 0xb3, 0x6c, 0xb2, - 0x52, 0x9a, 0x31, 0x7a, 0x1d, 0xa0, 0x15, 0x85, 0xf4, 0xfc, 0x4a, 0xda, 0xf2, 0x63, 0x5b, 0xd0, - 0x87, 0xd7, 0x15, 0x4d, 0xee, 0x0d, 0x4f, 0x7f, 0x63, 0x8d, 0x9f, 0xfb, 0x22, 0x14, 0x57, 0xdb, - 0x09, 0xb9, 0xd5, 0x83, 0xc4, 0x3a, 0x68, 0xf6, 0x03, 0xf7, 0x43, 0x30, 0xca, 0x68, 0x5f, 0x09, - 0x1b, 0x74, 0x5b, 0xa5, 0x43, 0xd3, 0xa4, 0xbf, 0xb3, 0xfe, 0x0a, 0x86, 0x84, 0x79, 0x19, 0x5d, - 0x32, 0xf5, 0xb0, 0x51, 0x55, 0x37, 0xc1, 0xd4, 0x84, 0xb8, 0xc2, 0xa0, 0x58, 0x94, 0xba, 0x9f, - 0x2c, 0xc0, 0x08, 0xab, 0x28, 0xc4, 0xcd, 0x2e, 0x0c, 0xd6, 0x39, 0x1f, 0x31, 0x86, 0x16, 0xe2, - 0xcb, 0xf4, 0xd6, 0x6b, 0x67, 0x39, 0x0e, 0xc0, 0x92, 0x1f, 0x65, 0x7d, 0xd3, 0xf3, 0x13, 0xca, - 0xba, 0x70, 0xb4, 0xac, 0x6f, 0x70, 0x36, 0x58, 0xf2, 0x73, 0x7f, 0x09, 0xd8, 0x0d, 0xeb, 0x85, - 0x86, 0x57, 0xe3, 0x23, 0x17, 0x6e, 0x93, 0xaa, 0x90, 0xb9, 0xda, 0xc8, 0x51, 0x28, 0x16, 0xa5, - 0xfc, 0xd6, 0x6a, 0x12, 0xf9, 0x2a, 0x32, 0x5b, 0xbb, 0xb5, 0xca, 0xc0, 0x32, 0x0e, 0xbf, 0xea, - 0x7e, 0xa5, 0x00, 0xc0, 0x12, 0xd5, 0xf1, 0x8b, 0xd1, 0xbf, 0x20, 0x83, 0xa8, 0x4c, 0x1f, 0xa7, - 0x0a, 0xa2, 0x62, 0x57, 0xbf, 0xf5, 0xe0, 0x29, 0xfd, 0xc2, 0x44, 0x61, 0xff, 0x0b, 0x13, 0xa8, - 0x05, 0x83, 0x61, 0x3b, 0xa1, 0xba, 0xaa, 0xd8, 0xec, 0x2d, 0xb8, 0xf8, 0xd7, 0x38, 0x41, 0x7e, - 0xcb, 0x40, 0xfc, 0xc0, 0x92, 0x0d, 0x7a, 0x16, 0x86, 0x5a, 0x51, 0x58, 0xa3, 0x7b, 0xb7, 0xd8, - 0xde, 0x1f, 0x92, 0xfa, 0xd0, 0xba, 0x80, 0xdf, 0xd1, 0xfe, 0xc7, 0x0a, 0xdb, 0xfd, 0xe3, 0x09, - 0x3e, 0x2e, 0x62, 0xee, 0x4d, 0x42, 0xc1, 0x97, 0x96, 0x29, 0x10, 0x24, 0x0a, 0x4b, 0xf3, 0xb8, - 0xe0, 0x57, 0xd5, 0xba, 0x2a, 0x74, 0x5d, 0x57, 0xef, 0x81, 0x91, 0xaa, 0x1f, 0xb7, 0x1a, 0xde, - 0xee, 0xd5, 0x1c, 0xb3, 0xe0, 0x7c, 0x5a, 0x84, 0x75, 0x3c, 0xf4, 0x94, 0xb8, 0x1e, 0xd3, 0x6f, - 0x98, 0x82, 0xe4, 0xf5, 0x98, 0xf4, 0xe2, 0x3d, 0xbf, 0x19, 0x93, 0x4d, 0x50, 0x50, 0xec, 0x39, - 0x41, 0x41, 0x56, 0x13, 0x1b, 0x38, 0x7e, 0x4d, 0xec, 0x7d, 0x30, 0x26, 0x7f, 0x32, 0xf5, 0xa8, - 0x74, 0x9a, 0xb5, 0x5e, 0x99, 0xc1, 0x37, 0xf4, 0x42, 0x6c, 0xe2, 0xa6, 0x93, 0x76, 0xb0, 0xd7, - 0x49, 0x7b, 0x09, 0x60, 0x33, 0x6c, 0x07, 0x55, 0x2f, 0xda, 0x5d, 0x9a, 0x17, 0xc1, 0xb4, 0x4a, - 0xf1, 0x9b, 0x55, 0x25, 0x58, 0xc3, 0xd2, 0x27, 0xfa, 0xf0, 0x5d, 0x26, 0xfa, 0x87, 0x60, 0x98, - 0x05, 0x1e, 0x93, 0xea, 0x4c, 0x22, 0xa2, 0x9f, 0x0e, 0x12, 0xcd, 0x99, 0xc6, 0x43, 0x4a, 0x22, - 0x38, 0xa5, 0x87, 0x3e, 0x0c, 0xb0, 0xe5, 0x07, 0x7e, 0x5c, 0x67, 0xd4, 0x47, 0x0e, 0x4c, 0x5d, - 0xf5, 0x73, 0x41, 0x51, 0xc1, 0x1a, 0x45, 0xf4, 0x12, 0x9c, 0x24, 0x71, 0xe2, 0x37, 0xbd, 0x84, - 0x54, 0xd5, 0x85, 0xd2, 0x12, 0xb3, 0x65, 0xaa, 0xd0, 0xef, 0xcb, 0x59, 0x84, 0x3b, 0x79, 0x40, - 0xdc, 0x49, 0xc8, 0x58, 0x91, 0x93, 0x07, 0x59, 0x91, 0xe8, 0x7f, 0x3a, 0x70, 0x32, 0x22, 0x3c, - 0x24, 0x26, 0x56, 0x0d, 0x3b, 0xc3, 0xc4, 0x71, 0xc5, 0x46, 0x0e, 0x78, 0x95, 0xec, 0x05, 0x67, - 0xb9, 0x70, 0xc5, 0x85, 0xc8, 0xde, 0x77, 0x94, 0xdf, 0xc9, 0x03, 0xbe, 0xf9, 0xf6, 0xd4, 0x54, - 0xe7, 0x5b, 0x04, 0x8a, 0x38, 0x5d, 0x79, 0x7f, 0xf3, 0xed, 0xa9, 0x09, 0xf9, 0x3b, 0x1d, 0xb4, - 0x8e, 0x4e, 0xd2, 0x6d, 0xb5, 0x15, 0x56, 0x97, 0xd6, 0x45, 0x98, 0x9a, 0xda, 0x56, 0xd7, 0x29, - 0x10, 0xf3, 0x32, 0xf4, 0x04, 0x0c, 0x55, 0x3d, 0xd2, 0x0c, 0x03, 0x95, 0xcd, 0x97, 0x69, 0xf3, - 0xf3, 0x02, 0x86, 0x55, 0x29, 0x3d, 0x43, 0x04, 0x62, 0x4b, 0x29, 0x9d, 0xb7, 0x75, 0x86, 0x90, - 0x9b, 0x14, 0xe7, 0x2a, 0x7f, 0x61, 0xc5, 0x09, 0x35, 0x60, 0xc0, 0x67, 0x86, 0x0a, 0x11, 0x09, - 0x6b, 0xc1, 0x3a, 0xc2, 0x0d, 0x1f, 0x32, 0x0e, 0x96, 0x89, 0x7e, 0xc1, 0x43, 0xdf, 0x6b, 0x4e, - 0x1c, 0xcf, 0x5e, 0xf3, 0x04, 0x0c, 0x55, 0xea, 0x7e, 0xa3, 0x1a, 0x91, 0xa0, 0x34, 0xc1, 0x4e, - 0xec, 0x6c, 0x24, 0xe6, 0x04, 0x0c, 0xab, 0x52, 0xf4, 0x57, 0x60, 0x2c, 0x6c, 0x27, 0x4c, 0xb4, - 0xd0, 0x71, 0x8a, 0x4b, 0x27, 0x19, 0x3a, 0x8b, 0x6b, 0x5a, 0xd3, 0x0b, 0xb0, 0x89, 0x47, 0x45, - 0x7c, 0x3d, 0x8c, 0x59, 0x5e, 0x22, 0x26, 0xe2, 0xcf, 0x9a, 0x22, 0xfe, 0x8a, 0x56, 0x86, 0x0d, - 0x4c, 0xf4, 0x35, 0x07, 0x4e, 0x36, 0xb3, 0x07, 0xb8, 0xd2, 0x39, 0x36, 0x32, 0x65, 0x1b, 0x8a, - 0x7e, 0x86, 0x34, 0x8f, 0x48, 0xef, 0x00, 0xe3, 0xce, 0x46, 0xb0, 0x0c, 0x61, 0xf1, 0x6e, 0x50, - 0xa9, 0x47, 0x61, 0x60, 0x36, 0xef, 0x41, 0x5b, 0xf7, 0xe2, 0xd8, 0xda, 0xce, 0x63, 0x31, 0xfb, - 0xe0, 0xed, 0xbd, 0xa9, 0x33, 0xb9, 0x45, 0x38, 0xbf, 0x51, 0x93, 0xf3, 0x70, 0x36, 0x5f, 0x3e, - 0xdc, 0xed, 0xc4, 0xd1, 0xa7, 0x9f, 0x38, 0x16, 0xe0, 0xc1, 0xae, 0x8d, 0xa2, 0x3b, 0x8d, 0xd4, - 0x36, 0x1d, 0x73, 0xa7, 0xe9, 0xd0, 0x0e, 0xc7, 0x61, 0x54, 0x7f, 0xbc, 0xc2, 0xfd, 0x3f, 0x7d, - 0x00, 0xa9, 0x9d, 0x1c, 0x79, 0x30, 0xce, 0x6d, 0xf2, 0x4b, 0xf3, 0x87, 0xbe, 0xd1, 0x3f, 0x67, - 0x10, 0xc0, 0x19, 0x82, 0xa8, 0x09, 0x88, 0x43, 0xf8, 0xef, 0xc3, 0xf8, 0x56, 0x99, 0x2b, 0x72, - 0xae, 0x83, 0x08, 0xce, 0x21, 0x4c, 0x7b, 0x94, 0x84, 0xdb, 0x24, 0xb8, 0x86, 0x57, 0x0e, 0x93, - 0x16, 0x82, 0x7b, 0xe3, 0x0c, 0x02, 0x38, 0x43, 0x10, 0xb9, 0x30, 0xc0, 0x6c, 0x33, 0x32, 0x76, - 0x9c, 0x89, 0x17, 0xa6, 0x69, 0xc4, 0x58, 0x94, 0xa0, 0xaf, 0x38, 0x30, 0x2e, 0xb3, 0x5b, 0x30, - 0x6b, 0xa8, 0x8c, 0x1a, 0xbf, 0x66, 0xcb, 0xcf, 0x71, 0x59, 0xa7, 0x9e, 0xc6, 0x64, 0x1a, 0xe0, - 0x18, 0x67, 0x1a, 0xe1, 0xbe, 0x00, 0xa7, 0x72, 0xaa, 0x5b, 0x39, 0xd1, 0x7e, 0xd7, 0x81, 0x11, - 0x2d, 0xe9, 0x22, 0x7a, 0x1d, 0x86, 0xc3, 0xb2, 0xf5, 0x40, 0xc0, 0xb5, 0x72, 0x47, 0x20, 0xa0, - 0x02, 0xe1, 0x94, 0x61, 0x2f, 0xf1, 0x8b, 0xb9, 0x19, 0x22, 0xef, 0x73, 0xb3, 0x0f, 0x1c, 0xbf, - 0xf8, 0x2b, 0x45, 0x48, 0x29, 0x1d, 0x30, 0xeb, 0x4a, 0x1a, 0xed, 0x58, 0xd8, 0x37, 0xda, 0xb1, - 0x0a, 0x27, 0x3c, 0xe6, 0x4b, 0x3e, 0x64, 0xae, 0x15, 0x9e, 0x73, 0xd7, 0xa4, 0x80, 0xb3, 0x24, - 0x29, 0x97, 0x38, 0xad, 0xca, 0xb8, 0xf4, 0x1f, 0x98, 0x4b, 0xd9, 0xa4, 0x80, 0xb3, 0x24, 0xd1, - 0x4b, 0x50, 0xaa, 0xb0, 0xbb, 0xc3, 0xbc, 0x8f, 0x4b, 0x5b, 0x57, 0xc3, 0x64, 0x3d, 0x22, 0x31, - 0x09, 0x12, 0x91, 0x55, 0xed, 0x11, 0x31, 0x0a, 0xa5, 0xb9, 0x2e, 0x78, 0xb8, 0x2b, 0x05, 0x7a, - 0x4c, 0x61, 0xce, 0x68, 0x3f, 0xd9, 0x65, 0x42, 0x44, 0x78, 0xe9, 0xd5, 0x31, 0xa5, 0xac, 0x17, - 0x62, 0x13, 0x17, 0xfd, 0xb2, 0x03, 0x63, 0x0d, 0x69, 0xae, 0xc7, 0xed, 0x86, 0x4c, 0x11, 0x8a, - 0xad, 0x4c, 0xbf, 0x15, 0x9d, 0x32, 0xd7, 0x25, 0x0c, 0x10, 0x36, 0x79, 0x67, 0x13, 0xdf, 0x0c, - 0xf5, 0x98, 0xf8, 0xe6, 0x07, 0x0e, 0x4c, 0x64, 0xb9, 0xa1, 0x6d, 0x78, 0xb8, 0xe9, 0x45, 0xdb, - 0x4b, 0xc1, 0x56, 0xc4, 0xee, 0x88, 0x24, 0x7c, 0x32, 0xcc, 0x6c, 0x25, 0x24, 0x9a, 0xf7, 0x76, - 0xb9, 0xfb, 0xb3, 0xa8, 0xde, 0x98, 0x7a, 0x78, 0x75, 0x3f, 0x64, 0xbc, 0x3f, 0x2d, 0x54, 0x86, - 0x33, 0x14, 0x81, 0xe5, 0xc5, 0xf3, 0xc3, 0x20, 0x65, 0x52, 0x60, 0x4c, 0x54, 0x9c, 0xe2, 0x6a, - 0x1e, 0x12, 0xce, 0xaf, 0xeb, 0x5e, 0x86, 0x01, 0x7e, 0x65, 0xef, 0x9e, 0xfc, 0x47, 0xee, 0xbf, - 0x29, 0x80, 0x54, 0x0c, 0xff, 0x72, 0xbb, 0xe3, 0xe8, 0x26, 0x1a, 0x31, 0x93, 0x92, 0xb0, 0x76, - 0xb0, 0x4d, 0x54, 0x64, 0xa0, 0x14, 0x25, 0x54, 0x63, 0x26, 0xb7, 0xfc, 0x64, 0x2e, 0xac, 0x4a, - 0x1b, 0x07, 0xd3, 0x98, 0x2f, 0x0b, 0x18, 0x56, 0xa5, 0xee, 0xa7, 0x1c, 0x18, 0xa3, 0xbd, 0x6c, - 0x34, 0x48, 0xa3, 0x9c, 0x90, 0x56, 0x8c, 0x62, 0x28, 0xc6, 0xf4, 0x1f, 0x7b, 0xa6, 0xc0, 0xf4, - 0x9a, 0x27, 0x69, 0x69, 0xce, 0x1a, 0xca, 0x04, 0x73, 0x5e, 0xee, 0x5b, 0x7d, 0x30, 0xac, 0x06, - 0xbb, 0x07, 0x7b, 0xea, 0xa5, 0x34, 0x39, 0x2c, 0x97, 0xc0, 0x25, 0x2d, 0x31, 0xec, 0x1d, 0x3a, - 0x74, 0xc1, 0x2e, 0xcf, 0x92, 0x91, 0x66, 0x89, 0x7d, 0xca, 0x74, 0x35, 0x9f, 0xd5, 0xe7, 0x9f, - 0x86, 0x2f, 0x7c, 0xce, 0xb7, 0x74, 0x4f, 0x7f, 0xbf, 0xad, 0xdd, 0x4c, 0xb9, 0x31, 0xbb, 0xbb, - 0xf8, 0x33, 0xef, 0x06, 0x15, 0x7b, 0x7a, 0x37, 0xe8, 0x49, 0xe8, 0x27, 0x41, 0xbb, 0xc9, 0x54, - 0xa5, 0x61, 0x76, 0x44, 0xe8, 0xbf, 0x1c, 0xb4, 0x9b, 0x66, 0xcf, 0x18, 0x0a, 0x7a, 0x3f, 0x8c, - 0x54, 0x49, 0x5c, 0x89, 0x7c, 0x96, 0xfa, 0x41, 0x58, 0x76, 0x1e, 0x62, 0xe6, 0xb2, 0x14, 0x6c, - 0x56, 0xd4, 0x2b, 0xb8, 0xaf, 0xc2, 0xc0, 0x7a, 0xa3, 0x5d, 0xf3, 0x03, 0xd4, 0x82, 0x01, 0x9e, - 0x08, 0x42, 0xec, 0xf6, 0x16, 0xce, 0x9d, 0x5c, 0x54, 0x68, 0x51, 0x28, 0xfc, 0xb6, 0xaf, 0xe0, - 0xe3, 0x7e, 0xb2, 0x00, 0xf4, 0x68, 0xbe, 0x38, 0x87, 0xfe, 0x7a, 0xc7, 0x33, 0x39, 0x3f, 0x97, - 0xf3, 0x4c, 0xce, 0x18, 0x43, 0xce, 0x79, 0x21, 0xa7, 0x01, 0x63, 0xcc, 0x39, 0x22, 0xf7, 0x40, - 0xa1, 0x56, 0x3f, 0xd3, 0x63, 0xee, 0x04, 0xbd, 0xaa, 0xd8, 0x11, 0x74, 0x10, 0x36, 0x89, 0xa3, - 0x55, 0x38, 0xc5, 0x73, 0x8c, 0xce, 0x93, 0x86, 0xb7, 0x9b, 0xc9, 0x25, 0x76, 0x5e, 0xbe, 0x7c, - 0x36, 0xdf, 0x89, 0x82, 0xf3, 0xea, 0xb9, 0xbf, 0xd7, 0x0f, 0x9a, 0x4b, 0xa2, 0x87, 0xd5, 0xf2, - 0x4a, 0xc6, 0x01, 0xb5, 0x6a, 0xc5, 0x01, 0x25, 0xbd, 0x3a, 0x5c, 0x02, 0x99, 0x3e, 0x27, 0xda, - 0xa8, 0x3a, 0x69, 0xb4, 0x44, 0x1f, 0x55, 0xa3, 0xae, 0x90, 0x46, 0x0b, 0xb3, 0x12, 0x75, 0xd7, - 0xb1, 0xbf, 0xeb, 0x5d, 0xc7, 0x3a, 0x14, 0x6b, 0x5e, 0xbb, 0x46, 0x44, 0x04, 0xa6, 0x05, 0x5f, - 0x23, 0xbb, 0x7d, 0xc1, 0x7d, 0x8d, 0xec, 0x5f, 0xcc, 0x19, 0xd0, 0xc5, 0x5e, 0x97, 0x21, 0x29, - 0xc2, 0x48, 0x6b, 0x61, 0xb1, 0xab, 0x28, 0x17, 0xbe, 0xd8, 0xd5, 0x4f, 0x9c, 0x32, 0x43, 0x2d, - 0x18, 0xac, 0xf0, 0x0c, 0x2e, 0x42, 0x67, 0x59, 0xb2, 0x71, 0x99, 0x93, 0x11, 0xe4, 0xd6, 0x14, - 0xf1, 0x03, 0x4b, 0x36, 0xee, 0x45, 0x18, 0xd1, 0x5e, 0xeb, 0xa0, 0x9f, 0x41, 0x25, 0x0f, 0xd1, - 0x3e, 0xc3, 0xbc, 0x97, 0x78, 0x98, 0x95, 0xb8, 0xdf, 0xea, 0x07, 0x65, 0x4b, 0xd3, 0xaf, 0x1e, - 0x7a, 0x15, 0x2d, 0xd5, 0x91, 0x71, 0x0d, 0x3f, 0x0c, 0xb0, 0x28, 0xa5, 0x7a, 0x5d, 0x93, 0x44, - 0x35, 0x75, 0x8e, 0x16, 0xe2, 0x5a, 0xe9, 0x75, 0xab, 0x7a, 0x21, 0x36, 0x71, 0xa9, 0x52, 0xde, - 0x14, 0x2e, 0xfa, 0x6c, 0x60, 0xb5, 0x74, 0xdd, 0x63, 0x85, 0xc1, 0x72, 0x25, 0x34, 0x35, 0x8f, - 0xbe, 0x08, 0xc4, 0xb4, 0xe1, 0x50, 0xd2, 0xa8, 0xf2, 0x80, 0x29, 0x1d, 0x82, 0x0d, 0xae, 0x68, - 0x11, 0x4e, 0xc6, 0x24, 0x59, 0xbb, 0x19, 0x90, 0x48, 0x65, 0x29, 0x10, 0xc9, 0x38, 0xd4, 0xc5, - 0x8c, 0x72, 0x16, 0x01, 0x77, 0xd6, 0xc9, 0x8d, 0x5d, 0x2d, 0x1e, 0x38, 0x76, 0x75, 0x1e, 0x26, - 0xb6, 0x3c, 0xbf, 0xd1, 0x8e, 0x48, 0xd7, 0x08, 0xd8, 0x85, 0x4c, 0x39, 0xee, 0xa8, 0xc1, 0xee, - 0x06, 0x35, 0xbc, 0x5a, 0x5c, 0x1a, 0xd4, 0xee, 0x06, 0x51, 0x00, 0xe6, 0x70, 0xf7, 0x37, 0x1d, - 0xe0, 0x59, 0x90, 0x66, 0xb6, 0xb6, 0xfc, 0xc0, 0x4f, 0x76, 0xd1, 0xd7, 0x1d, 0x98, 0x08, 0xc2, - 0x2a, 0x99, 0x09, 0x12, 0x5f, 0x02, 0xed, 0xa5, 0xa6, 0x67, 0xbc, 0xae, 0x66, 0xc8, 0xf3, 0x94, - 0x1a, 0x59, 0x28, 0xee, 0x68, 0x86, 0x7b, 0x0e, 0xce, 0xe4, 0x12, 0x70, 0x7f, 0xd0, 0x07, 0x66, - 0x32, 0x27, 0xf4, 0x3c, 0x14, 0x1b, 0x2c, 0xbd, 0x88, 0x73, 0xc8, 0x2c, 0x5d, 0x6c, 0xac, 0x78, - 0xfe, 0x11, 0x4e, 0x09, 0xcd, 0xc3, 0x08, 0xcb, 0x10, 0x25, 0x92, 0xbf, 0x14, 0x8c, 0xac, 0x0a, - 0x23, 0x38, 0x2d, 0xba, 0x63, 0xfe, 0xc4, 0x7a, 0x35, 0xf4, 0x1a, 0x0c, 0x6e, 0xf2, 0x3c, 0x99, - 0xf6, 0x7c, 0x7e, 0x22, 0xf1, 0x26, 0xd3, 0x8d, 0x64, 0x16, 0xce, 0x3b, 0xe9, 0xbf, 0x58, 0x72, - 0x44, 0xbb, 0x30, 0xe4, 0xc9, 0x6f, 0xda, 0x6f, 0xeb, 0xa2, 0x86, 0x31, 0x7f, 0x44, 0xc4, 0x8c, - 0xfc, 0x86, 0x8a, 0x5d, 0x26, 0xb4, 0xa8, 0xd8, 0x53, 0x68, 0xd1, 0x77, 0x1c, 0x80, 0xf4, 0x51, - 0x11, 0x74, 0x0b, 0x86, 0xe2, 0x67, 0x0c, 0x43, 0x85, 0x8d, 0x4b, 0xfe, 0x82, 0xa2, 0x76, 0x11, - 0x56, 0x40, 0xb0, 0xe2, 0x76, 0x37, 0xe3, 0xca, 0x4f, 0x1d, 0x38, 0x9d, 0xf7, 0xf8, 0xc9, 0x7d, - 0x6c, 0xf1, 0x41, 0xed, 0x2a, 0xa2, 0xc2, 0x7a, 0x44, 0xb6, 0xfc, 0x5b, 0x39, 0xd9, 0x9a, 0x79, - 0x01, 0x4e, 0x71, 0xdc, 0x3f, 0x1d, 0x04, 0xc5, 0xf8, 0x88, 0xec, 0x30, 0x8f, 0xd3, 0x33, 0x53, - 0x2d, 0xd5, 0xb9, 0x14, 0x1e, 0x66, 0x50, 0x2c, 0x4a, 0xe9, 0xb9, 0x49, 0x06, 0xc5, 0x0b, 0x91, - 0xcd, 0x66, 0xa1, 0x0c, 0x9e, 0xc7, 0xaa, 0x34, 0xcf, 0xb2, 0x53, 0x3c, 0x16, 0xcb, 0xce, 0x80, - 0x7d, 0xcb, 0x4e, 0x13, 0x50, 0xcc, 0x17, 0x0a, 0x33, 0xa7, 0x08, 0x46, 0xa3, 0x07, 0x36, 0x34, - 0x97, 0x3b, 0x88, 0xe0, 0x1c, 0xc2, 0x2c, 0x86, 0x22, 0x6c, 0x90, 0x19, 0x7c, 0x55, 0x1c, 0x3e, - 0xd2, 0x18, 0x0a, 0x0e, 0xc6, 0xb2, 0xfc, 0x90, 0xa6, 0x14, 0xf4, 0xdb, 0xce, 0x3e, 0xb6, 0xaa, - 0x61, 0x5b, 0x5b, 0x50, 0x6e, 0x26, 0x3d, 0x76, 0x92, 0x3a, 0x8c, 0x01, 0xec, 0x1b, 0x0e, 0x9c, - 0x24, 0x41, 0x25, 0xda, 0x65, 0x74, 0x04, 0x35, 0xe1, 0xe2, 0xbe, 0x66, 0x63, 0xad, 0x5f, 0xce, - 0x12, 0xe7, 0x9e, 0xa4, 0x0e, 0x30, 0xee, 0x6c, 0x06, 0x5a, 0x83, 0xa1, 0x8a, 0x27, 0xe6, 0xc5, - 0xc8, 0x41, 0xe6, 0x05, 0x77, 0xd4, 0xcd, 0x88, 0xd9, 0xa0, 0x88, 0xb8, 0x3f, 0x2e, 0xc0, 0xa9, - 0x9c, 0x26, 0xb1, 0xfb, 0x5a, 0x4d, 0xba, 0x00, 0x96, 0xaa, 0xd9, 0xe5, 0xbf, 0x2c, 0xe0, 0x58, - 0x61, 0xa0, 0x75, 0x38, 0xbd, 0xdd, 0x8c, 0x53, 0x2a, 0x73, 0x61, 0x90, 0x90, 0x5b, 0x52, 0x18, - 0x48, 0xf7, 0xf7, 0xe9, 0xe5, 0x1c, 0x1c, 0x9c, 0x5b, 0x93, 0x6a, 0x4b, 0x24, 0xf0, 0x36, 0x1b, - 0x24, 0x2d, 0x12, 0xb7, 0x18, 0x95, 0xb6, 0x74, 0x39, 0x53, 0x8e, 0x3b, 0x6a, 0xa0, 0xcf, 0x39, - 0x70, 0x3e, 0x26, 0xd1, 0x0e, 0x89, 0xca, 0x7e, 0x95, 0xcc, 0xb5, 0xe3, 0x24, 0x6c, 0x92, 0xe8, - 0x90, 0xd6, 0xd9, 0xa9, 0xdb, 0x7b, 0x53, 0xe7, 0xcb, 0xdd, 0xa9, 0xe1, 0xfd, 0x58, 0xb9, 0x9f, - 0x73, 0x60, 0xbc, 0xcc, 0xce, 0xee, 0x4a, 0x75, 0xb7, 0x9d, 0x4b, 0xf5, 0x71, 0x95, 0xba, 0x23, - 0x23, 0x84, 0xcd, 0x64, 0x1b, 0xee, 0xcb, 0x30, 0x51, 0x26, 0x4d, 0xaf, 0x55, 0x67, 0xb7, 0x98, - 0x79, 0xf8, 0xd7, 0x45, 0x18, 0x8e, 0x25, 0x2c, 0xfb, 0x7c, 0x92, 0x42, 0xc6, 0x29, 0x0e, 0x7a, - 0x8c, 0x87, 0xaa, 0xc9, 0x0b, 0x47, 0xc3, 0xfc, 0x90, 0xc3, 0xe3, 0xdb, 0x62, 0x2c, 0xcb, 0xdc, - 0xb7, 0x1c, 0x18, 0x4d, 0xeb, 0x93, 0x2d, 0x54, 0x83, 0x13, 0x15, 0xed, 0xb2, 0x5e, 0x7a, 0x4d, - 0xa2, 0xf7, 0x7b, 0x7d, 0x3c, 0xc5, 0xb3, 0x49, 0x04, 0x67, 0xa9, 0x1e, 0x3c, 0xd2, 0xef, 0x8b, - 0x05, 0x38, 0xa1, 0x9a, 0x2a, 0xfc, 0x94, 0x6f, 0x64, 0x03, 0xf2, 0xb0, 0x8d, 0x24, 0x44, 0xe6, - 0xd8, 0xef, 0x13, 0x94, 0xf7, 0x46, 0x36, 0x28, 0xef, 0x48, 0xd9, 0x77, 0xb8, 0x5e, 0xbf, 0x53, - 0x80, 0x21, 0x95, 0x12, 0xe9, 0x79, 0x28, 0xb2, 0x93, 0xeb, 0xbd, 0xe9, 0xdf, 0xec, 0x14, 0x8c, - 0x39, 0x25, 0x4a, 0x92, 0x05, 0xfd, 0x1c, 0x3a, 0xf1, 0xee, 0x30, 0xb7, 0x5f, 0x7a, 0x51, 0x82, - 0x39, 0x25, 0xb4, 0x0c, 0x7d, 0x24, 0xa8, 0x0a, 0x45, 0xfc, 0xe0, 0x04, 0xd9, 0x43, 0x67, 0x97, - 0x83, 0x2a, 0xa6, 0x54, 0x58, 0x5e, 0x36, 0xae, 0x6f, 0x65, 0x9e, 0xb5, 0x11, 0xca, 0x96, 0x28, - 0x75, 0x67, 0xc1, 0xc8, 0xd9, 0x77, 0xa8, 0x9b, 0x11, 0xbf, 0xdc, 0x07, 0x03, 0xe5, 0xf6, 0x26, - 0x3d, 0x96, 0x7c, 0xdb, 0x81, 0x53, 0x37, 0x33, 0x99, 0xad, 0xd3, 0x75, 0x72, 0xcd, 0x9e, 0x1d, - 0x58, 0x0f, 0x5e, 0x53, 0xd6, 0xaf, 0x9c, 0x42, 0x9c, 0xd7, 0x1c, 0x23, 0xb9, 0x6c, 0xdf, 0x91, - 0x24, 0x97, 0xbd, 0x75, 0xc4, 0xb7, 0x37, 0xc6, 0xba, 0xdd, 0xdc, 0x70, 0x7f, 0xaf, 0x08, 0xc0, - 0xbf, 0xc6, 0x5a, 0x2b, 0xe9, 0xc5, 0xb2, 0xf7, 0x2c, 0x8c, 0xd6, 0x48, 0x40, 0x22, 0x19, 0x9a, - 0x98, 0x79, 0x75, 0x69, 0x51, 0x2b, 0xc3, 0x06, 0x26, 0x9b, 0x2c, 0x41, 0x12, 0xed, 0x72, 0x55, - 0x3b, 0x7b, 0x43, 0x43, 0x95, 0x60, 0x0d, 0x0b, 0x4d, 0x1b, 0x8e, 0x17, 0xee, 0xc3, 0x1f, 0xdf, - 0xc7, 0x4f, 0xf2, 0x7e, 0x18, 0x37, 0x33, 0xb1, 0x08, 0x85, 0x4f, 0xf9, 0xdc, 0xcd, 0x04, 0x2e, - 0x38, 0x83, 0x4d, 0x17, 0x42, 0x35, 0xda, 0xc5, 0xed, 0x40, 0x68, 0x7e, 0x6a, 0x21, 0xcc, 0x33, - 0x28, 0x16, 0xa5, 0x2c, 0x85, 0x05, 0xdb, 0x03, 0x39, 0x5c, 0xa4, 0xc1, 0x48, 0x53, 0x58, 0x68, - 0x65, 0xd8, 0xc0, 0xa4, 0x1c, 0x84, 0x65, 0x14, 0xcc, 0xa5, 0x96, 0x31, 0x67, 0xb6, 0x60, 0x3c, - 0x34, 0x2d, 0x3a, 0x5c, 0x0d, 0x7a, 0x77, 0x8f, 0x53, 0xcf, 0xa8, 0xcb, 0x63, 0x25, 0x32, 0x06, - 0xa0, 0x0c, 0x7d, 0xaa, 0xfa, 0xea, 0x17, 0x19, 0x46, 0xcd, 0xc8, 0xd6, 0xae, 0x77, 0x0d, 0xd6, - 0xe1, 0x74, 0x2b, 0xac, 0xae, 0x47, 0x7e, 0x18, 0xf9, 0xc9, 0xee, 0x5c, 0xc3, 0x8b, 0x63, 0x36, - 0x31, 0xc6, 0x4c, 0x95, 0x68, 0x3d, 0x07, 0x07, 0xe7, 0xd6, 0xa4, 0x67, 0xa2, 0x96, 0x00, 0xb2, - 0xf8, 0xb2, 0x22, 0x57, 0xea, 0x24, 0x22, 0x56, 0xa5, 0xee, 0x29, 0x38, 0x59, 0x6e, 0xb7, 0x5a, - 0x0d, 0x9f, 0x54, 0x95, 0x63, 0xc3, 0xfd, 0x00, 0x9c, 0x10, 0xa9, 0x67, 0x95, 0x02, 0x72, 0xa0, - 0x44, 0xe9, 0xee, 0x7f, 0xec, 0x83, 0x13, 0x99, 0x68, 0x1e, 0xf4, 0x5a, 0x56, 0x6d, 0xb0, 0x93, - 0x12, 0x55, 0x53, 0x18, 0x44, 0x7e, 0xd3, 0x3c, 0x15, 0xa4, 0x2e, 0x43, 0xf1, 0xad, 0x5d, 0x81, - 0x61, 0x01, 0xeb, 0x7c, 0x57, 0x31, 0xe2, 0xf9, 0x3f, 0x06, 0xa0, 0xd8, 0xca, 0x5b, 0xf7, 0xb6, - 0xfb, 0xc9, 0xd6, 0xaf, 0x82, 0xc4, 0x58, 0xe3, 0x88, 0x02, 0x18, 0x64, 0x0d, 0x21, 0xf2, 0xde, - 0xa5, 0xb5, 0xbe, 0x32, 0xad, 0x6d, 0x95, 0xd3, 0xc6, 0x92, 0x89, 0xfb, 0xd9, 0x02, 0xe4, 0x87, - 0x8c, 0xa1, 0x8f, 0x75, 0x7e, 0xf0, 0xe7, 0x2d, 0x0e, 0x84, 0x88, 0x59, 0xeb, 0xfe, 0xcd, 0x03, - 0xf3, 0x9b, 0xaf, 0x5a, 0x1a, 0x07, 0xc1, 0xb7, 0xe3, 0xcb, 0xbb, 0xff, 0xc3, 0x81, 0x91, 0x8d, - 0x8d, 0x15, 0xb5, 0xb5, 0x63, 0x38, 0x1b, 0xf3, 0x94, 0x06, 0xcc, 0xb3, 0x3e, 0x17, 0x36, 0x5b, - 0xdc, 0xd1, 0x2e, 0x02, 0x00, 0x58, 0xd6, 0xe3, 0x72, 0x2e, 0x06, 0xee, 0x52, 0x13, 0x2d, 0xc1, - 0x29, 0xbd, 0xa4, 0xac, 0x3d, 0x32, 0x59, 0x14, 0x19, 0x8e, 0x3a, 0x8b, 0x71, 0x5e, 0x9d, 0x2c, - 0x29, 0x61, 0x50, 0x66, 0xdb, 0x73, 0x0e, 0x29, 0x51, 0x8c, 0xf3, 0xea, 0xb8, 0x6b, 0x30, 0xb2, - 0xe1, 0x45, 0xaa, 0xe3, 0x1f, 0x84, 0x89, 0x4a, 0xd8, 0x94, 0xea, 0xca, 0x0a, 0xd9, 0x21, 0x0d, - 0xd1, 0x65, 0xfe, 0xb2, 0x4b, 0xa6, 0x0c, 0x77, 0x60, 0xbb, 0xff, 0xf5, 0x02, 0xa8, 0x2b, 0x9a, - 0x3d, 0xec, 0xa8, 0x2d, 0x15, 0x4c, 0x5b, 0xb4, 0x1c, 0x4c, 0xab, 0xf6, 0x96, 0x4c, 0x40, 0x6d, - 0x92, 0x06, 0xd4, 0x0e, 0xd8, 0x0e, 0xa8, 0x55, 0x4a, 0x76, 0x47, 0x50, 0xed, 0x57, 0x1d, 0x18, - 0x0d, 0xc2, 0x2a, 0x51, 0x1e, 0xd0, 0x41, 0xb6, 0xc2, 0x5f, 0xb2, 0x77, 0x37, 0x81, 0x07, 0x87, - 0x0a, 0xf2, 0x3c, 0xd0, 0x5b, 0x6d, 0xc9, 0x7a, 0x11, 0x36, 0xda, 0x81, 0x16, 0x34, 0xd3, 0x32, - 0xf7, 0xe0, 0x3c, 0x94, 0x77, 0x44, 0xbb, 0xab, 0x9d, 0xf8, 0x96, 0xa6, 0x27, 0x0e, 0xdb, 0x32, - 0x99, 0xca, 0x7b, 0x77, 0x9a, 0x23, 0x4a, 0x26, 0xee, 0x4e, 0xf5, 0x47, 0x17, 0x06, 0x78, 0x44, - 0xb8, 0xc8, 0xa5, 0xc5, 0xfc, 0xa3, 0x3c, 0x5a, 0x1c, 0x8b, 0x12, 0x94, 0xc8, 0x28, 0x8b, 0x11, - 0x5b, 0xcf, 0x70, 0x18, 0x51, 0x1c, 0xf9, 0x61, 0x16, 0xe8, 0x39, 0xfd, 0xe8, 0x3f, 0xda, 0xcb, - 0xd1, 0x7f, 0xac, 0xeb, 0xb1, 0xff, 0x0b, 0x0e, 0x8c, 0x56, 0xb4, 0x67, 0x31, 0x4a, 0x4f, 0xd8, - 0x7a, 0xfe, 0x3b, 0xef, 0xf5, 0x12, 0xee, 0x76, 0x33, 0x9e, 0xe1, 0x30, 0xb8, 0xb3, 0x04, 0xa2, - 0xcc, 0xce, 0xc1, 0x54, 0x1d, 0x2b, 0x89, 0x39, 0x4c, 0xbb, 0x89, 0x8c, 0x56, 0xa5, 0x30, 0x2c, - 0x78, 0xa1, 0xd7, 0x61, 0x48, 0x5e, 0x2a, 0x10, 0xc1, 0xf7, 0xd8, 0x86, 0x1f, 0xc4, 0x74, 0xb6, - 0xca, 0xac, 0x83, 0x1c, 0x8a, 0x15, 0x47, 0x54, 0x87, 0xbe, 0xaa, 0x57, 0x13, 0x61, 0xf8, 0xab, - 0x76, 0xb2, 0xba, 0x4a, 0x9e, 0xec, 0x48, 0x3a, 0x3f, 0xb3, 0x88, 0x29, 0x0b, 0x74, 0x2b, 0x7d, - 0x57, 0x60, 0xc2, 0xda, 0xee, 0x6b, 0xaa, 0x85, 0x5c, 0x27, 0xe8, 0x78, 0xa6, 0xa0, 0x2a, 0xfc, - 0xd3, 0xff, 0x1f, 0x63, 0xbb, 0x60, 0x27, 0x2d, 0x2c, 0x4f, 0xf4, 0x92, 0xfa, 0xb8, 0x29, 0x97, - 0x7a, 0x92, 0xb4, 0x4a, 0x3f, 0x6f, 0x8b, 0x0b, 0x4b, 0x57, 0xc2, 0x5f, 0x6a, 0xdf, 0xd8, 0x58, - 0xc7, 0x8c, 0x3a, 0x6a, 0xc0, 0x40, 0x8b, 0x85, 0xce, 0x94, 0xde, 0x69, 0x6b, 0x6f, 0xe1, 0xa1, - 0x38, 0x7c, 0x6e, 0xf2, 0xff, 0xb1, 0xe0, 0x81, 0x2e, 0xc3, 0x20, 0x7f, 0x1e, 0x87, 0x5f, 0x83, - 0x18, 0xb9, 0x34, 0xd9, 0xfd, 0x91, 0x9d, 0x74, 0xa3, 0xe0, 0xbf, 0x63, 0x2c, 0xeb, 0xa2, 0x2f, - 0x3a, 0x30, 0x4e, 0x25, 0x6a, 0xfa, 0x9e, 0x4f, 0x09, 0xd9, 0x92, 0x59, 0xd7, 0x62, 0xaa, 0x91, - 0x48, 0x59, 0xa3, 0x8e, 0x85, 0x4b, 0x06, 0x3b, 0x9c, 0x61, 0x8f, 0xde, 0x80, 0xa1, 0xd8, 0xaf, - 0x92, 0x8a, 0x17, 0xc5, 0xa5, 0x53, 0x47, 0xd3, 0x94, 0xd4, 0x23, 0x26, 0x18, 0x61, 0xc5, 0x12, - 0xfd, 0x1a, 0x7b, 0x50, 0xb5, 0x52, 0xf7, 0x77, 0xc8, 0x4a, 0x58, 0xe1, 0xc7, 0x98, 0xd3, 0xb6, - 0xd6, 0xbe, 0xf4, 0xfd, 0x49, 0xca, 0xc2, 0x51, 0x64, 0xb2, 0xc3, 0x59, 0xfe, 0xe8, 0x6f, 0x38, - 0x70, 0x86, 0x3f, 0x7c, 0x90, 0x7d, 0xcb, 0xe3, 0xcc, 0x21, 0x4d, 0x52, 0xec, 0xfe, 0xc6, 0x4c, - 0x1e, 0x49, 0x9c, 0xcf, 0x89, 0xa5, 0x29, 0x36, 0x9f, 0x5f, 0x3a, 0x6b, 0xd5, 0x33, 0xdc, 0xfb, - 0x93, 0x4b, 0xe8, 0x69, 0x18, 0x69, 0x89, 0xed, 0xd0, 0x8f, 0x9b, 0xec, 0x36, 0x4e, 0x1f, 0xbf, - 0x27, 0xb9, 0x9e, 0x82, 0xb1, 0x8e, 0x63, 0xe4, 0xac, 0x7e, 0x72, 0xbf, 0x9c, 0xd5, 0xe8, 0x1a, - 0x8c, 0x24, 0x61, 0x43, 0xa4, 0x6d, 0x8d, 0x4b, 0x25, 0x36, 0x03, 0x2f, 0xe4, 0xad, 0xad, 0x0d, - 0x85, 0x96, 0x9e, 0xdc, 0x53, 0x58, 0x8c, 0x75, 0x3a, 0x2c, 0x02, 0x5a, 0x3c, 0x28, 0x11, 0xb1, - 0x23, 0xfb, 0x83, 0x99, 0x08, 0x68, 0xbd, 0x10, 0x9b, 0xb8, 0x68, 0x11, 0x4e, 0xb6, 0x3a, 0xce, - 0xfc, 0xfc, 0x16, 0xa0, 0x0a, 0x3a, 0xe9, 0x3c, 0xf0, 0x77, 0xd6, 0x31, 0x4e, 0xfb, 0xe7, 0xf7, - 0x3b, 0xed, 0x77, 0xc9, 0xe0, 0xfc, 0xd0, 0x61, 0x32, 0x38, 0xa3, 0x2a, 0x3c, 0xe4, 0xb5, 0x93, - 0x90, 0xa5, 0xe4, 0x31, 0xab, 0xf0, 0x60, 0xf0, 0x47, 0x78, 0x7c, 0xf9, 0xed, 0xbd, 0xa9, 0x87, - 0x66, 0xf6, 0xc1, 0xc3, 0xfb, 0x52, 0x41, 0xaf, 0xc2, 0x10, 0x11, 0x59, 0xa8, 0x4b, 0x3f, 0x67, - 0x4b, 0x49, 0x30, 0xf3, 0x5a, 0xcb, 0x38, 0x5b, 0x0e, 0xc3, 0x8a, 0x1f, 0xda, 0x80, 0x91, 0x7a, - 0x18, 0x27, 0x33, 0x0d, 0xdf, 0x8b, 0x49, 0x5c, 0x7a, 0x98, 0x4d, 0x9a, 0x5c, 0xdd, 0xeb, 0x8a, - 0x44, 0x4b, 0xe7, 0xcc, 0x95, 0xb4, 0x26, 0xd6, 0xc9, 0x20, 0xc2, 0xfc, 0xc3, 0x2c, 0x12, 0x5e, - 0xfa, 0xbe, 0x2e, 0xb0, 0x8e, 0x3d, 0x9e, 0x47, 0x79, 0x3d, 0xac, 0x96, 0x4d, 0x6c, 0xe5, 0x20, - 0xd6, 0x81, 0x38, 0x4b, 0x13, 0x3d, 0x0b, 0xa3, 0xad, 0xb0, 0x5a, 0x6e, 0x91, 0xca, 0xba, 0x97, - 0x54, 0xea, 0xa5, 0x29, 0xd3, 0xca, 0xb8, 0xae, 0x95, 0x61, 0x03, 0x13, 0xb5, 0x60, 0xb0, 0xc9, - 0x73, 0x35, 0x94, 0x1e, 0xb5, 0x75, 0xb6, 0x11, 0xc9, 0x1f, 0x84, 0x0d, 0x81, 0xff, 0xc0, 0x92, - 0x0d, 0xfa, 0xfb, 0x0e, 0x9c, 0xc8, 0xdc, 0x2f, 0x2b, 0xbd, 0xc3, 0x9a, 0xca, 0x62, 0x12, 0x9e, - 0x7d, 0x9c, 0x0d, 0x9f, 0x09, 0xbc, 0xd3, 0x09, 0xc2, 0xd9, 0x16, 0xf1, 0x71, 0x61, 0x09, 0x57, - 0x4a, 0x8f, 0xd9, 0x1b, 0x17, 0x46, 0x50, 0x8e, 0x0b, 0xfb, 0x81, 0x25, 0x1b, 0xf4, 0x24, 0x0c, - 0x8a, 0xdc, 0x88, 0xa5, 0xc7, 0x4d, 0xaf, 0xbb, 0x48, 0xa1, 0x88, 0x65, 0xf9, 0xe4, 0x07, 0xe0, - 0x64, 0xc7, 0xd1, 0xed, 0x40, 0x59, 0x3f, 0x7e, 0xc3, 0x01, 0xfd, 0x42, 0xba, 0xf5, 0xa7, 0x5f, - 0x9e, 0x85, 0xd1, 0x0a, 0x7f, 0x89, 0x93, 0x5f, 0x69, 0xef, 0x37, 0xed, 0xbd, 0x73, 0x5a, 0x19, - 0x36, 0x30, 0xdd, 0x2b, 0x80, 0x3a, 0xf3, 0xf2, 0x1f, 0xca, 0x71, 0xf2, 0x0f, 0x1d, 0x18, 0x33, - 0x74, 0x06, 0xeb, 0x7e, 0xd5, 0x05, 0x40, 0x4d, 0x3f, 0x8a, 0xc2, 0x48, 0x7f, 0xf2, 0x50, 0xa4, - 0x9d, 0x60, 0xf1, 0x16, 0xab, 0x1d, 0xa5, 0x38, 0xa7, 0x86, 0xfb, 0x8f, 0xfb, 0x21, 0x0d, 0x34, - 0x57, 0x59, 0x8b, 0x9d, 0xae, 0x59, 0x8b, 0x9f, 0x82, 0xa1, 0x97, 0xe3, 0x30, 0x58, 0x4f, 0x73, - 0x1b, 0xab, 0x6f, 0xf1, 0x5c, 0x79, 0xed, 0x2a, 0xc3, 0x54, 0x18, 0x0c, 0xfb, 0x95, 0x05, 0xbf, - 0x91, 0x74, 0x26, 0xbf, 0x7d, 0xee, 0x79, 0x0e, 0xc7, 0x0a, 0x83, 0xbd, 0x7e, 0xb8, 0x43, 0x94, - 0x23, 0x20, 0x7d, 0xfd, 0x90, 0x3f, 0xb9, 0xc1, 0xca, 0xd0, 0x45, 0x18, 0x56, 0x4e, 0x04, 0xe1, - 0x99, 0x50, 0x23, 0xa5, 0x3c, 0x0d, 0x38, 0xc5, 0x61, 0x0a, 0xa1, 0x30, 0x3c, 0x0b, 0x13, 0x4a, - 0xd9, 0xc6, 0xf1, 0x24, 0x63, 0xca, 0xe6, 0xb2, 0x5d, 0x82, 0xb1, 0x62, 0x99, 0xe7, 0x5b, 0x1e, - 0x3e, 0x12, 0xdf, 0xb2, 0x76, 0xeb, 0xa1, 0xd8, 0xeb, 0xad, 0x07, 0x73, 0x6e, 0x0f, 0xf5, 0x34, - 0xb7, 0x3f, 0xdd, 0x07, 0x83, 0xd7, 0x49, 0xc4, 0xd2, 0xc6, 0x3f, 0x09, 0x83, 0x3b, 0xfc, 0xdf, - 0xec, 0x95, 0x59, 0x81, 0x81, 0x65, 0x39, 0xfd, 0x6e, 0x9b, 0x6d, 0xbf, 0x51, 0x9d, 0x4f, 0x57, - 0x71, 0x9a, 0xd6, 0x51, 0x16, 0xe0, 0x14, 0x87, 0x56, 0xa8, 0x51, 0xcd, 0xbe, 0xd9, 0xf4, 0x3b, - 0x1e, 0xf6, 0x5f, 0x94, 0x05, 0x38, 0xc5, 0x41, 0x8f, 0xc3, 0x40, 0xcd, 0x4f, 0x36, 0xbc, 0x5a, - 0xd6, 0x33, 0xba, 0xc8, 0xa0, 0x58, 0x94, 0x32, 0xb7, 0x98, 0x9f, 0x6c, 0x44, 0x84, 0x59, 0x76, - 0x3b, 0x32, 0x76, 0x2c, 0x6a, 0x65, 0xd8, 0xc0, 0x64, 0x4d, 0x0a, 0x45, 0xcf, 0x44, 0x9c, 0x6c, - 0xda, 0x24, 0x59, 0x80, 0x53, 0x1c, 0x3a, 0xff, 0x2b, 0x61, 0xb3, 0xe5, 0x37, 0x44, 0x04, 0xb7, - 0x36, 0xff, 0xe7, 0x04, 0x1c, 0x2b, 0x0c, 0x8a, 0x4d, 0x45, 0x18, 0x15, 0x3f, 0xd9, 0x97, 0xe6, - 0xd6, 0x05, 0x1c, 0x2b, 0x0c, 0xf7, 0x3a, 0x8c, 0xf1, 0x95, 0x3c, 0xd7, 0xf0, 0xfc, 0xe6, 0xe2, - 0x1c, 0xba, 0xdc, 0x71, 0xeb, 0xe1, 0xc9, 0x9c, 0x5b, 0x0f, 0x67, 0x8c, 0x4a, 0x9d, 0xb7, 0x1f, - 0xdc, 0x1f, 0x16, 0x60, 0xe8, 0x18, 0x1f, 0xeb, 0x3c, 0xf6, 0x77, 0xa7, 0xd1, 0xad, 0xcc, 0x43, - 0x9d, 0xeb, 0x36, 0x2f, 0x31, 0xed, 0xfb, 0x48, 0xe7, 0x7f, 0x2a, 0xc0, 0x59, 0x89, 0x2a, 0xcf, - 0x72, 0x8b, 0x73, 0xec, 0x01, 0xb4, 0xa3, 0x1f, 0xe8, 0xc8, 0x18, 0xe8, 0x75, 0x7b, 0xa7, 0xd1, - 0xc5, 0xb9, 0xae, 0x43, 0xfd, 0x6a, 0x66, 0xa8, 0xb1, 0x55, 0xae, 0xfb, 0x0f, 0xf6, 0x9f, 0x3b, - 0x30, 0x99, 0x3f, 0xd8, 0xc7, 0xf0, 0x36, 0xea, 0x1b, 0xe6, 0xdb, 0xa8, 0xbf, 0x68, 0x6f, 0x8a, - 0x99, 0x5d, 0xe9, 0xf2, 0x4a, 0xea, 0x7f, 0x77, 0xe0, 0xb4, 0xac, 0xc0, 0x76, 0xcf, 0x59, 0x3f, - 0x60, 0xc1, 0x3b, 0x47, 0x3f, 0xcd, 0x5e, 0x37, 0xa6, 0xd9, 0x8b, 0xf6, 0x3a, 0xae, 0xf7, 0xa3, - 0xeb, 0x9b, 0xf2, 0x7f, 0xe6, 0x40, 0x29, 0xaf, 0xc2, 0x31, 0x7c, 0xf2, 0xd7, 0xcc, 0x4f, 0x7e, - 0xfd, 0x68, 0x7a, 0xde, 0xfd, 0x83, 0x97, 0xba, 0x0d, 0x14, 0x6a, 0x48, 0xbd, 0xca, 0xb1, 0xe5, - 0x93, 0xe6, 0x2c, 0xf2, 0x15, 0xb4, 0x06, 0x0c, 0xc4, 0x2c, 0x4a, 0x45, 0x4c, 0x81, 0x2b, 0x36, - 0xb4, 0x2d, 0x4a, 0x4f, 0xd8, 0xd8, 0xd9, 0xff, 0x58, 0xf0, 0x70, 0x7f, 0xb3, 0x00, 0xe7, 0xd4, - 0x9b, 0xc7, 0x64, 0x87, 0x34, 0xd2, 0xf5, 0xc1, 0x5e, 0xc8, 0xf0, 0xd4, 0x4f, 0x7b, 0x2f, 0x64, - 0xa4, 0x2c, 0xd2, 0xb5, 0x90, 0xc2, 0xb0, 0xc6, 0x13, 0x95, 0xe1, 0x0c, 0x7b, 0xd1, 0x62, 0xc1, - 0x0f, 0xbc, 0x86, 0xff, 0x2a, 0x89, 0x30, 0x69, 0x86, 0x3b, 0x5e, 0x43, 0x68, 0xea, 0xea, 0xd6, - 0xf4, 0x42, 0x1e, 0x12, 0xce, 0xaf, 0xdb, 0x71, 0xe2, 0xee, 0xeb, 0xf5, 0xc4, 0xed, 0xfe, 0x89, - 0x03, 0xa3, 0xc7, 0xf8, 0x42, 0x74, 0x68, 0x2e, 0x89, 0xe7, 0xec, 0x2d, 0x89, 0x2e, 0xcb, 0x60, - 0xaf, 0x08, 0x1d, 0x8f, 0xe6, 0xa2, 0xcf, 0x38, 0x2a, 0x8e, 0x87, 0xc7, 0x4b, 0x7e, 0xd8, 0x5e, - 0x3b, 0x0e, 0x92, 0x6a, 0x13, 0x7d, 0x23, 0x93, 0x7f, 0xb4, 0x60, 0x2b, 0x89, 0x56, 0x47, 0x6b, - 0x0e, 0x91, 0x87, 0xf4, 0xab, 0x0e, 0x00, 0x6f, 0xa7, 0x48, 0x5f, 0x4e, 0xdb, 0xb6, 0x79, 0x64, - 0x23, 0x45, 0x99, 0xf0, 0xa6, 0xa9, 0x25, 0x94, 0x16, 0x60, 0xad, 0x25, 0xf7, 0x90, 0x60, 0xf4, - 0x9e, 0x73, 0x9b, 0x7e, 0xd1, 0x81, 0x13, 0x99, 0xe6, 0xe6, 0xd4, 0xdf, 0x32, 0xdf, 0x78, 0xb4, - 0xa0, 0x59, 0x99, 0x49, 0xad, 0x75, 0xe3, 0xc9, 0x7f, 0x71, 0xc1, 0x78, 0x6d, 0x1c, 0xbd, 0x06, - 0xc3, 0xd2, 0xf2, 0x21, 0xa7, 0xb7, 0xcd, 0xb7, 0x6e, 0xd5, 0xf1, 0x46, 0x42, 0x62, 0x9c, 0xf2, - 0xcb, 0x84, 0x09, 0x16, 0x7a, 0x0a, 0x13, 0xbc, 0xbf, 0x2f, 0xe5, 0xe6, 0xdb, 0xa5, 0xfb, 0x8f, - 0xc4, 0x2e, 0xfd, 0x90, 0x75, 0xbb, 0xf4, 0xc3, 0xc7, 0x6c, 0x97, 0xd6, 0x9c, 0x84, 0xc5, 0x7b, - 0x70, 0x12, 0xbe, 0x06, 0xa7, 0x77, 0xd2, 0x43, 0xa7, 0x9a, 0x49, 0x22, 0x75, 0xd3, 0x93, 0xb9, - 0xd6, 0x68, 0x7a, 0x80, 0x8e, 0x13, 0x12, 0x24, 0xda, 0x71, 0x35, 0x8d, 0x50, 0xbc, 0x9e, 0x43, - 0x0e, 0xe7, 0x32, 0xc9, 0x7a, 0x7b, 0x06, 0x7b, 0xf0, 0xf6, 0xbc, 0xe5, 0xc0, 0x19, 0xaf, 0xe3, - 0x9a, 0x1d, 0x26, 0x5b, 0x22, 0xe4, 0xe4, 0x86, 0x3d, 0x15, 0xc2, 0x20, 0x2f, 0xdc, 0x6a, 0x79, - 0x45, 0x38, 0xbf, 0x41, 0xe8, 0xb1, 0xd4, 0xf5, 0xce, 0xe3, 0x5a, 0xf3, 0xfd, 0xe4, 0xdf, 0xc8, - 0xc6, 0xf3, 0x00, 0x1b, 0xfa, 0x8f, 0xda, 0x3d, 0x6d, 0x5b, 0x88, 0xe9, 0x19, 0xb9, 0x87, 0x98, - 0x9e, 0x8c, 0xeb, 0x6d, 0xd4, 0x92, 0xeb, 0x2d, 0x80, 0x09, 0xbf, 0xe9, 0xd5, 0xc8, 0x7a, 0xbb, - 0xd1, 0xe0, 0xf7, 0x66, 0xe4, 0x6b, 0xc4, 0xb9, 0x16, 0xbc, 0x95, 0xb0, 0xe2, 0x35, 0xb2, 0xef, - 0xd0, 0xab, 0xfb, 0x41, 0x4b, 0x19, 0x4a, 0xb8, 0x83, 0x36, 0x9d, 0xb0, 0x2c, 0x87, 0x20, 0x49, - 0xe8, 0x68, 0xb3, 0xc0, 0x91, 0x21, 0x3e, 0x61, 0xaf, 0xa4, 0x60, 0xac, 0xe3, 0xa0, 0x65, 0x18, - 0xae, 0x06, 0xb1, 0xb8, 0x31, 0x7c, 0x82, 0x09, 0xb3, 0x77, 0x51, 0x11, 0x38, 0x7f, 0xb5, 0xac, - 0xee, 0x0a, 0x3f, 0x94, 0x93, 0x14, 0x53, 0x95, 0xe3, 0xb4, 0x3e, 0x5a, 0x65, 0xc4, 0xc4, 0x3b, - 0x6b, 0x3c, 0x9e, 0xe3, 0x91, 0x2e, 0x0e, 0xa3, 0xf9, 0xab, 0xf2, 0xa5, 0xb8, 0x31, 0xc1, 0x4e, - 0x3c, 0x98, 0x96, 0x52, 0xd0, 0x5e, 0x85, 0x3e, 0xb9, 0xef, 0xab, 0xd0, 0x2c, 0x1b, 0x6e, 0xd2, - 0x50, 0xee, 0xe1, 0x0b, 0xd6, 0xb2, 0xe1, 0xa6, 0x91, 0x92, 0x22, 0x1b, 0x6e, 0x0a, 0xc0, 0x3a, - 0x4b, 0xb4, 0xd6, 0xcd, 0x4d, 0x7e, 0x8a, 0x09, 0x8d, 0x83, 0x3b, 0xbd, 0x75, 0x7f, 0xe9, 0xe9, - 0x7d, 0xfd, 0xa5, 0x1d, 0xfe, 0xdd, 0x33, 0x07, 0xf0, 0xef, 0xd6, 0x59, 0x9e, 0xd2, 0xc5, 0x39, - 0xe1, 0x52, 0xb7, 0x70, 0xbe, 0x63, 0x99, 0x51, 0x78, 0xe4, 0x29, 0xfb, 0x17, 0x73, 0x06, 0x5d, - 0x03, 0xc8, 0xcf, 0x1d, 0x3a, 0x80, 0x9c, 0x8a, 0xe7, 0x14, 0xce, 0x12, 0xde, 0x16, 0x85, 0x78, - 0x4e, 0xc1, 0x58, 0xc7, 0xc9, 0x7a, 0x4b, 0x1f, 0x3c, 0x32, 0x6f, 0xe9, 0xe4, 0x31, 0x78, 0x4b, - 0xcf, 0xf7, 0xec, 0x2d, 0xbd, 0x05, 0xa7, 0x5a, 0x61, 0x75, 0xde, 0x8f, 0xa3, 0x36, 0xbb, 0x48, - 0x38, 0xdb, 0xae, 0xd6, 0x48, 0xc2, 0xdc, 0xad, 0x23, 0x97, 0xde, 0xa5, 0x37, 0xb2, 0xc5, 0x16, - 0xb2, 0x5c, 0xa3, 0x99, 0x0a, 0xcc, 0x74, 0xc2, 0xa2, 0x6e, 0x73, 0x0a, 0x71, 0x1e, 0x0b, 0xdd, - 0x4f, 0xfb, 0xc8, 0xf1, 0xf8, 0x69, 0x3f, 0x08, 0x43, 0x71, 0xbd, 0x9d, 0x54, 0xc3, 0x9b, 0x01, - 0x73, 0xc6, 0x0f, 0xcf, 0xbe, 0x43, 0x99, 0xb2, 0x05, 0xfc, 0xce, 0xde, 0xd4, 0x84, 0xfc, 0x5f, - 0xb3, 0x62, 0x0b, 0x08, 0xfa, 0x66, 0x97, 0xfb, 0x4a, 0xee, 0x51, 0xde, 0x57, 0x3a, 0x77, 0xa0, - 0xbb, 0x4a, 0x79, 0xce, 0xe8, 0x47, 0x7f, 0xe6, 0x9c, 0xd1, 0x5f, 0x77, 0x60, 0x6c, 0x47, 0x77, - 0x19, 0x08, 0x87, 0xb9, 0x85, 0xc0, 0x1d, 0xc3, 0x13, 0x31, 0xeb, 0x52, 0x39, 0x67, 0x80, 0xee, - 0x64, 0x01, 0xd8, 0x6c, 0x49, 0x4e, 0x50, 0xd1, 0x63, 0xf7, 0x2b, 0xa8, 0xe8, 0x0d, 0x26, 0xc7, - 0xe4, 0x21, 0x97, 0x79, 0xd1, 0xed, 0xc6, 0x14, 0x4b, 0x99, 0xa8, 0x42, 0x8a, 0x75, 0x7e, 0xe8, - 0x0b, 0x0e, 0x4c, 0xc8, 0x73, 0x99, 0x70, 0xf9, 0xc5, 0x22, 0x2a, 0xd2, 0xe6, 0x71, 0x90, 0x85, - 0xd5, 0x6f, 0x64, 0xf8, 0xe0, 0x0e, 0xce, 0x54, 0xaa, 0xab, 0x20, 0xb4, 0x5a, 0xcc, 0x82, 0x7f, - 0x85, 0x0e, 0x33, 0x93, 0x82, 0xb1, 0x8e, 0x83, 0xbe, 0xe5, 0x40, 0xb1, 0x1e, 0x86, 0xdb, 0x71, - 0xe9, 0x49, 0x26, 0xd0, 0x5f, 0xb0, 0xac, 0x9b, 0x5e, 0xa1, 0xb4, 0xb9, 0x52, 0xfa, 0xb4, 0xb4, - 0x1d, 0x31, 0xd8, 0x9d, 0xbd, 0xa9, 0x71, 0xe3, 0x39, 0xa7, 0xf8, 0xcd, 0xb7, 0x35, 0x88, 0xb0, - 0x6d, 0xb2, 0xa6, 0xa1, 0x2f, 0x3b, 0x30, 0x71, 0x33, 0x63, 0xd0, 0x10, 0x61, 0xa1, 0xd8, 0xbe, - 0xa9, 0x84, 0x0f, 0x77, 0x16, 0x8a, 0x3b, 0x5a, 0x80, 0x3e, 0x6f, 0x1a, 0x3a, 0x79, 0xfc, 0xa8, - 0xc5, 0x01, 0xcc, 0x18, 0x56, 0xf9, 0xb5, 0xa0, 0x7c, 0x8b, 0xe7, 0x3d, 0xc7, 0x87, 0x4c, 0xd2, - 0xce, 0xa4, 0x1f, 0x2b, 0xa7, 0x2a, 0x31, 0xed, 0x2d, 0x16, 0x16, 0xbb, 0xf1, 0xf9, 0x75, 0x73, - 0xcb, 0x97, 0xcf, 0xc2, 0xb8, 0xe9, 0xdb, 0x43, 0xef, 0x36, 0x9f, 0xea, 0xb8, 0x90, 0x7d, 0xf5, - 0x60, 0x4c, 0xe2, 0x1b, 0x2f, 0x1f, 0x18, 0x4f, 0x13, 0x14, 0x8e, 0xf4, 0x69, 0x82, 0xbe, 0xe3, - 0x79, 0x9a, 0x60, 0xe2, 0x28, 0x9e, 0x26, 0x38, 0x79, 0xa0, 0xa7, 0x09, 0xb4, 0xa7, 0x21, 0xfa, - 0xef, 0xf2, 0x34, 0xc4, 0x0c, 0x9c, 0x90, 0x77, 0x7f, 0x88, 0xc8, 0xfe, 0xce, 0xdd, 0xfe, 0xea, - 0x95, 0xf1, 0x39, 0xb3, 0x18, 0x67, 0xf1, 0xe9, 0x22, 0x2b, 0x06, 0xac, 0xe6, 0x80, 0xad, 0x77, - 0xa3, 0xcc, 0xa9, 0xc5, 0x8e, 0xcf, 0x42, 0x44, 0xc9, 0x68, 0xe7, 0x22, 0x83, 0xdd, 0x91, 0xff, - 0x60, 0xde, 0x02, 0xf4, 0x12, 0x94, 0xc2, 0xad, 0xad, 0x46, 0xe8, 0x55, 0xd3, 0xf7, 0x13, 0x64, - 0x5c, 0x02, 0xbf, 0xab, 0xaa, 0xd2, 0xed, 0xae, 0x75, 0xc1, 0xc3, 0x5d, 0x29, 0xa0, 0xb7, 0xa8, - 0x62, 0x92, 0x84, 0x11, 0xa9, 0xa6, 0xb6, 0x9a, 0x61, 0xd6, 0x67, 0x62, 0xbd, 0xcf, 0x65, 0x93, - 0x0f, 0xef, 0xbd, 0xfa, 0x28, 0x99, 0x52, 0x9c, 0x6d, 0x16, 0x8a, 0xe0, 0x6c, 0x2b, 0xcf, 0x54, - 0x14, 0x8b, 0x1b, 0x4b, 0xfb, 0x19, 0xac, 0xd4, 0x5b, 0xda, 0xb9, 0xc6, 0xa6, 0x18, 0x77, 0xa1, - 0xac, 0xbf, 0x71, 0x30, 0x74, 0x3c, 0x6f, 0x1c, 0x7c, 0x1c, 0xa0, 0x22, 0xb3, 0xad, 0x49, 0xe3, - 0xc3, 0xb2, 0x95, 0xab, 0x34, 0x9c, 0xa6, 0xf6, 0xac, 0xac, 0x62, 0x83, 0x35, 0x96, 0xe8, 0x7f, - 0xe7, 0x3e, 0x02, 0xc2, 0x2d, 0x2c, 0x35, 0xeb, 0x73, 0xe2, 0x67, 0xee, 0x21, 0x90, 0x7f, 0xe0, - 0xc0, 0x24, 0x9f, 0x79, 0x59, 0xe5, 0x9e, 0xaa, 0x16, 0xe2, 0x6e, 0x8f, 0xed, 0xd0, 0x15, 0x9e, - 0x35, 0xc9, 0xe0, 0xca, 0x1c, 0xdd, 0xfb, 0xb4, 0x04, 0x7d, 0x35, 0xe7, 0x48, 0x71, 0xc2, 0x96, - 0xcd, 0x32, 0xff, 0x29, 0x87, 0x53, 0xb7, 0x7b, 0x39, 0x45, 0xfc, 0xa3, 0xae, 0x26, 0x55, 0xc4, - 0x9a, 0xf7, 0x4b, 0x47, 0x64, 0x52, 0xd5, 0xdf, 0x9b, 0x38, 0x90, 0x61, 0xf5, 0x8b, 0x0e, 0x4c, - 0x78, 0x99, 0x50, 0x13, 0x66, 0x07, 0xb2, 0x62, 0x93, 0x9a, 0x89, 0xd2, 0xf8, 0x15, 0xa6, 0xe4, - 0x65, 0xa3, 0x5a, 0x70, 0x07, 0x73, 0xf4, 0x43, 0x07, 0xce, 0x27, 0x5e, 0xbc, 0xcd, 0xb3, 0x39, - 0xc7, 0xe9, 0x5d, 0x5d, 0xd1, 0xb8, 0xd3, 0x6c, 0x35, 0xbe, 0x62, 0x7d, 0x35, 0x6e, 0x74, 0xe7, - 0xc9, 0xd7, 0xe5, 0xa3, 0x62, 0x5d, 0x9e, 0xdf, 0x07, 0x13, 0xef, 0xd7, 0xf4, 0xc9, 0xcf, 0x38, - 0xfc, 0xd5, 0xaf, 0xae, 0x2a, 0xdf, 0xa6, 0xa9, 0xf2, 0xad, 0xd8, 0x7c, 0x77, 0x48, 0xd7, 0x3d, - 0x7f, 0xd5, 0x81, 0xd3, 0x79, 0x3b, 0x52, 0x4e, 0x93, 0x3e, 0x6a, 0x36, 0xc9, 0xe2, 0x29, 0x4b, - 0x6f, 0x90, 0x95, 0x67, 0x4f, 0x26, 0xaf, 0xc2, 0x23, 0x77, 0xfb, 0x8a, 0x77, 0xa3, 0x37, 0xa4, - 0xab, 0xc5, 0x7f, 0x36, 0xac, 0x79, 0x21, 0x13, 0xd2, 0xb2, 0x1e, 0xc3, 0x1d, 0xc0, 0x80, 0x1f, - 0x34, 0xfc, 0x80, 0x88, 0xfb, 0x9a, 0x36, 0xcf, 0xb0, 0xe2, 0xd9, 0x22, 0x4a, 0x1d, 0x0b, 0x2e, - 0xf7, 0xd9, 0x29, 0x99, 0x7d, 0x08, 0xae, 0xff, 0xf8, 0x1f, 0x82, 0xbb, 0x09, 0xc3, 0x37, 0xfd, - 0xa4, 0xce, 0x82, 0x29, 0x84, 0xaf, 0xcf, 0xc2, 0x3d, 0x47, 0x4a, 0x2e, 0xed, 0xfb, 0x0d, 0xc9, - 0x00, 0xa7, 0xbc, 0xd0, 0x45, 0xce, 0x98, 0x45, 0x6e, 0x67, 0x43, 0x6a, 0x6f, 0xc8, 0x02, 0x9c, - 0xe2, 0xd0, 0xc1, 0x1a, 0xa5, 0xbf, 0x64, 0x0e, 0x28, 0x91, 0x19, 0xd9, 0x46, 0xc6, 0x4b, 0x41, - 0x91, 0xdf, 0x26, 0xbe, 0xa1, 0xf1, 0xc0, 0x06, 0x47, 0x95, 0x9c, 0x7a, 0xa8, 0x6b, 0x72, 0xea, - 0xd7, 0x99, 0xc2, 0x96, 0xf8, 0x41, 0x9b, 0xac, 0x05, 0x22, 0xde, 0x7b, 0xc5, 0xce, 0xdd, 0x67, - 0x4e, 0x93, 0x1f, 0xc1, 0xd3, 0xdf, 0x58, 0xe3, 0xa7, 0xb9, 0x5c, 0x46, 0xf6, 0x75, 0xb9, 0xa4, - 0x26, 0x97, 0x51, 0xeb, 0x26, 0x97, 0x84, 0xb4, 0xac, 0x98, 0x5c, 0x7e, 0xa6, 0xcc, 0x01, 0x7f, - 0xee, 0x00, 0x52, 0x7a, 0x97, 0x12, 0xa8, 0xc7, 0x10, 0x54, 0xf9, 0x09, 0x07, 0x20, 0x50, 0xcf, - 0x85, 0xda, 0xdd, 0x05, 0x39, 0xcd, 0xb4, 0x01, 0x29, 0x0c, 0x6b, 0x3c, 0xdd, 0x3f, 0x75, 0xd2, - 0xd8, 0xe5, 0xb4, 0xef, 0xc7, 0x10, 0x44, 0xb6, 0x6b, 0x06, 0x91, 0x6d, 0x58, 0x34, 0xdd, 0xab, - 0x6e, 0x74, 0x09, 0x27, 0xfb, 0x49, 0x01, 0x4e, 0xe8, 0xc8, 0x65, 0x72, 0x1c, 0x1f, 0xfb, 0xa6, - 0x11, 0x41, 0x7b, 0xcd, 0x6e, 0x7f, 0xcb, 0xc2, 0x03, 0x94, 0x17, 0xad, 0xfd, 0xf1, 0x4c, 0xb4, - 0xf6, 0x0d, 0xfb, 0xac, 0xf7, 0x0f, 0xd9, 0xfe, 0xcf, 0x0e, 0x9c, 0xca, 0xd4, 0x38, 0x86, 0x09, - 0xb6, 0x63, 0x4e, 0xb0, 0xe7, 0xad, 0xf7, 0xba, 0xcb, 0xec, 0xfa, 0x76, 0xa1, 0xa3, 0xb7, 0xec, - 0x10, 0xf7, 0x69, 0x07, 0x8a, 0x54, 0x5b, 0x96, 0xf1, 0x5c, 0x1f, 0x3d, 0x92, 0x19, 0xc0, 0xf4, - 0x7a, 0x21, 0x9d, 0x55, 0xfb, 0x18, 0x0c, 0x73, 0xee, 0x93, 0x9f, 0x72, 0x00, 0x52, 0xa4, 0xfb, - 0xa5, 0x02, 0xbb, 0xdf, 0x2d, 0xc0, 0x99, 0xdc, 0x69, 0x84, 0x3e, 0xab, 0x2c, 0x72, 0x8e, 0xed, - 0x68, 0x45, 0x83, 0x91, 0x6e, 0x98, 0x1b, 0x33, 0x0c, 0x73, 0xc2, 0x1e, 0x77, 0xbf, 0x0e, 0x30, - 0x42, 0x4c, 0x6b, 0x83, 0xf5, 0x63, 0x27, 0x0d, 0x80, 0x55, 0x79, 0x8d, 0xfe, 0x02, 0x5e, 0xe2, - 0x71, 0x7f, 0xa2, 0xdd, 0x70, 0x90, 0x1d, 0x3d, 0x06, 0x59, 0x71, 0xd3, 0x94, 0x15, 0xd8, 0xbe, - 0x1f, 0xb9, 0x8b, 0xb0, 0x78, 0x05, 0xf2, 0x1c, 0xcb, 0xbd, 0x25, 0x81, 0x34, 0xae, 0xc3, 0x16, - 0x7a, 0xbe, 0x0e, 0x3b, 0x06, 0x23, 0x2f, 0xfa, 0x2a, 0x81, 0xe8, 0xec, 0xf4, 0xf7, 0x7e, 0x74, - 0xe1, 0x81, 0xef, 0xff, 0xe8, 0xc2, 0x03, 0x3f, 0xfc, 0xd1, 0x85, 0x07, 0x3e, 0x71, 0xfb, 0x82, - 0xf3, 0xbd, 0xdb, 0x17, 0x9c, 0xef, 0xdf, 0xbe, 0xe0, 0xfc, 0xf0, 0xf6, 0x05, 0xe7, 0xdf, 0xde, - 0xbe, 0xe0, 0xfc, 0xad, 0x7f, 0x77, 0xe1, 0x81, 0x17, 0x87, 0x64, 0xc7, 0xfe, 0x5f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xc9, 0x42, 0x1f, 0x61, 0xd5, 0xd8, 0x00, 0x00, + // 11197 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, 0xc7, 0xe1, 0xfa, 0xbe, 0x96, 0x20, 0x79, 0xa0, 0x87, + 0x22, 0x43, 0x5a, 0x14, 0xce, 0x3c, 0x4a, 0x09, 0x23, 0x25, 0x92, 0xf0, 0x71, 0xc0, 0x81, 0x00, + 0x0e, 0x60, 0x2f, 0xee, 0xce, 0xa4, 0x68, 0x4a, 0x83, 0xdd, 0xc6, 0xee, 0x10, 0xbb, 0x33, 0xcb, + 0x99, 0x59, 0xdc, 0x81, 0x1f, 0xa2, 0x42, 0x7d, 0xc7, 0xb2, 0x15, 0xcb, 0x92, 0x2c, 0x29, 0x49, + 0x95, 0xa2, 0x48, 0x89, 0x22, 0xbb, 0x92, 0xb2, 0x7f, 0xa5, 0xec, 0x7f, 0xa9, 0x94, 0x4b, 0x29, + 0xa7, 0x12, 0xb9, 0xa2, 0x94, 0x55, 0x15, 0x1b, 0x8c, 0x2e, 0x89, 0x2a, 0x95, 0x44, 0x55, 0xb1, + 0x2a, 0x4e, 0xe2, 0xcb, 0x47, 0xa5, 0xfa, 0x73, 0xba, 0x67, 0x67, 0x71, 0x0b, 0x5c, 0x03, 0xa7, + 0xd8, 0xbf, 0x80, 0x7d, 0xfd, 0xfa, 0xbd, 0xee, 0x9e, 0xee, 0xd7, 0xaf, 0xdf, 0x7b, 0xfd, 0x1a, + 0xd6, 0x6b, 0x7e, 0x52, 0x6f, 0x6f, 0x4e, 0x57, 0xc2, 0xe6, 0x05, 0x2f, 0xaa, 0x85, 0xad, 0x28, + 0x7c, 0x99, 0xfd, 0xf3, 0xae, 0x1b, 0x61, 0xb4, 0xbd, 0xd5, 0x08, 0x6f, 0xc4, 0x17, 0x76, 0x9e, + 0xbe, 0xd0, 0xda, 0xae, 0x5d, 0xf0, 0x5a, 0x7e, 0x7c, 0x41, 0x42, 0x2f, 0xec, 0x3c, 0xe5, 0x35, + 0x5a, 0x75, 0xef, 0xa9, 0x0b, 0x35, 0x12, 0x90, 0xc8, 0x4b, 0x48, 0x75, 0xba, 0x15, 0x85, 0x49, + 0x88, 0x3e, 0x98, 0x52, 0x9c, 0x96, 0x14, 0xd9, 0x3f, 0x1f, 0x56, 0x14, 0xa7, 0x77, 0x9e, 0x9e, + 0x6e, 0x6d, 0xd7, 0xa6, 0x29, 0xc5, 0x69, 0x09, 0x9d, 0x96, 0x14, 0x27, 0xdf, 0xa5, 0xb5, 0xa9, + 0x16, 0xd6, 0xc2, 0x0b, 0x8c, 0xf0, 0x66, 0x7b, 0x8b, 0xfd, 0x62, 0x3f, 0xd8, 0x7f, 0x9c, 0xe1, + 0xa4, 0xbb, 0xfd, 0x4c, 0x3c, 0xed, 0x87, 0xb4, 0x7d, 0x17, 0x2a, 0x61, 0x44, 0x2e, 0xec, 0x74, + 0x34, 0x6a, 0xf2, 0x1d, 0x1a, 0x4e, 0x2b, 0x6c, 0xf8, 0x95, 0xdd, 0x3c, 0xac, 0x77, 0xa7, 0x58, + 0x4d, 0xaf, 0x52, 0xf7, 0x03, 0x12, 0xed, 0xa6, 0x5d, 0x6f, 0x92, 0xc4, 0xcb, 0xab, 0x75, 0xa1, + 0x5b, 0xad, 0xa8, 0x1d, 0x24, 0x7e, 0x93, 0x74, 0x54, 0xf8, 0x8b, 0x77, 0xaa, 0x10, 0x57, 0xea, + 0xa4, 0xe9, 0x75, 0xd4, 0x7b, 0xba, 0x5b, 0xbd, 0x76, 0xe2, 0x37, 0x2e, 0xf8, 0x41, 0x12, 0x27, + 0x51, 0xb6, 0x92, 0x7b, 0x09, 0x06, 0x66, 0x9a, 0x61, 0x3b, 0x48, 0xd0, 0xfb, 0xa0, 0xb8, 0xe3, + 0x35, 0xda, 0xa4, 0xe4, 0x3c, 0xec, 0x3c, 0x3e, 0x3c, 0xfb, 0xe8, 0x77, 0xf7, 0xa6, 0xee, 0xbb, + 0xb5, 0x37, 0x55, 0xbc, 0x46, 0x81, 0xb7, 0xf7, 0xa6, 0x4e, 0x93, 0xa0, 0x12, 0x56, 0xfd, 0xa0, + 0x76, 0xe1, 0xe5, 0x38, 0x0c, 0xa6, 0xaf, 0xb4, 0x9b, 0x9b, 0x24, 0xc2, 0xbc, 0x8e, 0xfb, 0xaf, + 0x0a, 0x70, 0x62, 0x26, 0xaa, 0xd4, 0xfd, 0x1d, 0x52, 0x4e, 0x28, 0xfd, 0xda, 0x2e, 0xaa, 0x43, + 0x5f, 0xe2, 0x45, 0x8c, 0xdc, 0xc8, 0xc5, 0xd5, 0xe9, 0xbb, 0xfd, 0xee, 0xd3, 0x1b, 0x5e, 0x24, + 0x69, 0xcf, 0x0e, 0xde, 0xda, 0x9b, 0xea, 0xdb, 0xf0, 0x22, 0x4c, 0x59, 0xa0, 0x06, 0xf4, 0x07, + 0x61, 0x40, 0x4a, 0x05, 0xc6, 0xea, 0xca, 0xdd, 0xb3, 0xba, 0x12, 0x06, 0xaa, 0x1f, 0xb3, 0x43, + 0xb7, 0xf6, 0xa6, 0xfa, 0x29, 0x04, 0x33, 0x2e, 0xb4, 0x5f, 0xaf, 0xfa, 0xad, 0x52, 0x9f, 0xad, + 0x7e, 0xbd, 0xe0, 0xb7, 0xcc, 0x7e, 0xbd, 0xe0, 0xb7, 0x30, 0x65, 0xe1, 0x7e, 0xb6, 0x00, 0xc3, + 0x33, 0x51, 0xad, 0xdd, 0x24, 0x41, 0x12, 0xa3, 0x37, 0x01, 0x5a, 0x5e, 0xe4, 0x35, 0x49, 0x42, + 0xa2, 0xb8, 0xe4, 0x3c, 0xdc, 0xf7, 0xf8, 0xc8, 0xc5, 0xe5, 0xbb, 0x67, 0xbf, 0x2e, 0x69, 0xce, + 0x22, 0xf1, 0xc9, 0x41, 0x81, 0x62, 0xac, 0xb1, 0x44, 0xaf, 0xc1, 0xb0, 0x17, 0x25, 0xfe, 0x96, + 0x57, 0x49, 0xe2, 0x52, 0x81, 0xf1, 0x7f, 0xf6, 0xee, 0xf9, 0xcf, 0x08, 0x92, 0xb3, 0x27, 0x05, + 0xfb, 0x61, 0x09, 0x89, 0x71, 0xca, 0xcf, 0xfd, 0xed, 0x7e, 0x18, 0x99, 0x89, 0x92, 0xc5, 0xb9, + 0x72, 0xe2, 0x25, 0xed, 0x18, 0xfd, 0x9e, 0x03, 0xa7, 0x62, 0x3e, 0x6c, 0x3e, 0x89, 0xd7, 0xa3, + 0xb0, 0x42, 0xe2, 0x98, 0x54, 0xc5, 0xb8, 0x6c, 0x59, 0x69, 0x97, 0x64, 0x36, 0x5d, 0xee, 0x64, + 0x74, 0x29, 0x48, 0xa2, 0xdd, 0xd9, 0xa7, 0x44, 0x9b, 0x4f, 0xe5, 0x60, 0xbc, 0xf5, 0xf6, 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, 0x6c, 0xb7, 0x1b, 0xeb, 0x1a, 0x07, + 0xde, 0xfe, 0xd3, 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, 0x45, 0x2b, 0xc3, + 0x06, 0xe6, 0xe4, 0x02, 0x94, 0xba, 0x8d, 0x1c, 0x9a, 0x80, 0xbe, 0x6d, 0xb2, 0xcb, 0x85, 0x0d, + 0xa6, 0xff, 0xa2, 0xd3, 0x52, 0x00, 0xd1, 0x65, 0x3c, 0x24, 0x24, 0xcb, 0x7b, 0x0b, 0xcf, 0x38, + 0x93, 0x1f, 0x80, 0x93, 0x1d, 0x4d, 0x3f, 0x08, 0x01, 0xf7, 0x7b, 0x03, 0x30, 0x24, 0x3f, 0x05, + 0x7a, 0x18, 0xfa, 0x03, 0xaf, 0x29, 0xe5, 0xdc, 0xa8, 0xe8, 0x47, 0xff, 0x15, 0xaf, 0x49, 0x57, + 0xb8, 0xd7, 0x24, 0x14, 0xa3, 0xe5, 0x25, 0x75, 0x46, 0x47, 0xc3, 0x58, 0xf7, 0x92, 0x3a, 0x66, + 0x25, 0xe8, 0x41, 0xe8, 0x6f, 0x86, 0x55, 0xc2, 0xc6, 0xa2, 0xc8, 0x25, 0xc4, 0x6a, 0x58, 0x25, + 0x98, 0x41, 0x69, 0xfd, 0xad, 0x28, 0x6c, 0x96, 0xfa, 0xcd, 0xfa, 0x0b, 0x51, 0xd8, 0xc4, 0xac, + 0x04, 0x7d, 0xc5, 0x81, 0x09, 0x39, 0xb7, 0x57, 0xc2, 0x8a, 0x97, 0xf8, 0x61, 0x50, 0x2a, 0x32, + 0x89, 0x82, 0xed, 0x2d, 0x29, 0x49, 0x79, 0xb6, 0x24, 0x9a, 0x30, 0x91, 0x2d, 0xc1, 0x1d, 0xad, + 0x40, 0x17, 0x01, 0x6a, 0x8d, 0x70, 0xd3, 0x6b, 0xd0, 0x01, 0x29, 0x0d, 0xb0, 0x2e, 0x28, 0xc9, + 0xb0, 0xa8, 0x4a, 0xb0, 0x86, 0x85, 0x6e, 0xc2, 0xa0, 0xc7, 0xa5, 0x7f, 0x69, 0x90, 0x75, 0xe2, + 0x39, 0x1b, 0x9d, 0x30, 0xb6, 0x93, 0xd9, 0x91, 0x5b, 0x7b, 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, 0x42, 0x20, 0x0f, 0x96, 0x39, 0x18, 0xcb, 0x72, 0xf4, 0x1e, 0x18, 0x89, 0x48, 0xa5, + 0x1d, 0xc5, 0x84, 0x7e, 0xd8, 0x12, 0x30, 0xda, 0xa7, 0x04, 0xfa, 0x08, 0x4e, 0x8b, 0xb0, 0x8e, + 0x87, 0xde, 0x0f, 0xe3, 0xf4, 0x03, 0x5f, 0xba, 0xd9, 0x8a, 0x48, 0x1c, 0xd3, 0xaf, 0x3a, 0xc2, + 0x18, 0x9d, 0x15, 0x35, 0xc7, 0x17, 0x8c, 0x52, 0x9c, 0xc1, 0x46, 0xaf, 0x03, 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, 0x37, 0x0b, 0xa0, 0x51, 0x41, 0xb3, 0x30, 0x24, 0xe4, 0x9a, + 0x58, 0x92, 0xb3, 0x8f, 0xc9, 0xef, 0x20, 0xbf, 0xe0, 0xed, 0xbd, 0x5c, 0x79, 0xa8, 0xea, 0xa1, + 0x37, 0x60, 0xa4, 0x15, 0x56, 0x57, 0x49, 0xe2, 0x55, 0xbd, 0xc4, 0x13, 0xbb, 0xb9, 0x85, 0x1d, + 0x46, 0x52, 0x9c, 0x3d, 0x41, 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, 0xb7, 0x1d, 0x38, 0xa1, 0xb6, 0xb3, 0xd9, 0xdd, 0x2b, 0x74, 0x56, 0xf1, 0xcd, 0x8a, + 0xd8, 0xfc, 0xbe, 0x94, 0x97, 0xfa, 0x29, 0xf8, 0x70, 0x59, 0x7f, 0x4e, 0xf4, 0xe1, 0x44, 0xa6, + 0x14, 0x67, 0x9b, 0x35, 0xf9, 0x65, 0x07, 0x4e, 0xe7, 0x91, 0xc8, 0x91, 0xb9, 0x75, 0x5d, 0xe6, + 0x5a, 0x15, 0x5e, 0x94, 0x2b, 0xed, 0x8c, 0x2e, 0xc7, 0xff, 0x6f, 0x01, 0x26, 0xf4, 0x29, 0xc4, + 0x34, 0x81, 0x7f, 0xe2, 0xc0, 0x19, 0xd9, 0x03, 0x4c, 0xe2, 0x76, 0x23, 0x33, 0xbc, 0x4d, 0xab, + 0xc3, 0xcb, 0x77, 0xd2, 0x99, 0x3c, 0x7e, 0x7c, 0x98, 0x1f, 0x12, 0xc3, 0x7c, 0x26, 0x17, 0x07, + 0xe7, 0x37, 0x75, 0xf2, 0x9b, 0x0e, 0x4c, 0x76, 0x27, 0x9a, 0x33, 0xf0, 0x2d, 0x73, 0xe0, 0x5f, + 0xb0, 0xd7, 0x49, 0xce, 0x9e, 0x0d, 0x3f, 0xeb, 0xac, 0xfe, 0x01, 0x7e, 0x63, 0x08, 0x3a, 0xf6, + 0x10, 0xf4, 0x14, 0x8c, 0x08, 0x71, 0xbc, 0x12, 0xd6, 0x62, 0xd6, 0xc8, 0x21, 0xbe, 0xd6, 0x66, + 0x52, 0x30, 0xd6, 0x71, 0x50, 0x15, 0x0a, 0xf1, 0xd3, 0xa2, 0xe9, 0x16, 0xc4, 0x5b, 0xf9, 0x69, + 0xa5, 0x45, 0x0e, 0xdc, 0xda, 0x9b, 0x2a, 0x94, 0x9f, 0xc6, 0x85, 0xf8, 0x69, 0xaa, 0xa9, 0xd7, + 0xfc, 0xc4, 0x9e, 0xa6, 0xbe, 0xe8, 0x27, 0x8a, 0x0f, 0xd3, 0xd4, 0x17, 0xfd, 0x04, 0x53, 0x16, + 0xf4, 0x04, 0x52, 0x4f, 0x92, 0x16, 0xdb, 0xf1, 0xad, 0x9c, 0x40, 0x2e, 0x6f, 0x6c, 0xac, 0x2b, + 0x5e, 0x4c, 0xbf, 0xa0, 0x10, 0xcc, 0xb8, 0xa0, 0xcf, 0x38, 0x74, 0xc4, 0x79, 0x61, 0x18, 0xed, + 0x0a, 0xc5, 0xe1, 0xaa, 0xbd, 0x29, 0x10, 0x46, 0xbb, 0x8a, 0xb9, 0xf8, 0x90, 0xaa, 0x00, 0xeb, + 0xac, 0x59, 0xc7, 0xab, 0x5b, 0x31, 0xd3, 0x13, 0xec, 0x74, 0x7c, 0x7e, 0xa1, 0x9c, 0xe9, 0xf8, + 0xfc, 0x42, 0x19, 0x33, 0x2e, 0xf4, 0x83, 0x46, 0xde, 0x0d, 0xa1, 0x63, 0x58, 0xf8, 0xa0, 0xd8, + 0xbb, 0x61, 0x7e, 0x50, 0xec, 0xdd, 0xc0, 0x94, 0x05, 0xe5, 0x14, 0xc6, 0x31, 0x53, 0x29, 0xac, + 0x70, 0x5a, 0x2b, 0x97, 0x4d, 0x4e, 0x6b, 0xe5, 0x32, 0xa6, 0x2c, 0xd8, 0x24, 0xad, 0xc4, 0x4c, + 0x1f, 0xb1, 0x33, 0x49, 0xe7, 0x32, 0x9c, 0x16, 0xe7, 0xca, 0x98, 0xb2, 0xa0, 0x22, 0xc3, 0x7b, + 0xb5, 0x1d, 0x71, 0x65, 0x66, 0xe4, 0xe2, 0x9a, 0x85, 0xf9, 0x42, 0xc9, 0x29, 0x6e, 0xc3, 0xb7, + 0xf6, 0xa6, 0x8a, 0x0c, 0x84, 0x39, 0x23, 0xf7, 0x77, 0xfb, 0x52, 0x71, 0x21, 0xe5, 0x39, 0xfa, + 0x15, 0xb6, 0x11, 0x0a, 0x59, 0x20, 0x54, 0x5f, 0xe7, 0xc8, 0x54, 0xdf, 0x53, 0x7c, 0xc7, 0x33, + 0xd8, 0xe1, 0x2c, 0x7f, 0xf4, 0x05, 0xa7, 0xf3, 0x6c, 0xeb, 0xd9, 0xdf, 0xcb, 0xd2, 0x8d, 0x99, + 0xef, 0x15, 0xfb, 0x1e, 0x79, 0x27, 0x3f, 0xe3, 0xa4, 0x4a, 0x44, 0xdc, 0x6d, 0x1f, 0xf8, 0x88, + 0xb9, 0x0f, 0x58, 0x3c, 0x90, 0xeb, 0x72, 0xff, 0xb3, 0x0e, 0x8c, 0x49, 0x38, 0x55, 0x8f, 0x63, + 0x74, 0x13, 0x86, 0x64, 0x4b, 0xc5, 0xd7, 0xb3, 0x69, 0x0b, 0x50, 0x4a, 0xbc, 0x6a, 0x8c, 0xe2, + 0xe6, 0x7e, 0x7b, 0x00, 0x50, 0xba, 0x57, 0xb5, 0xc2, 0xd8, 0x67, 0x92, 0xe8, 0x10, 0xbb, 0x50, + 0xa0, 0xed, 0x42, 0xd7, 0x6c, 0xee, 0x42, 0x69, 0xb3, 0x8c, 0xfd, 0xe8, 0x0b, 0x19, 0xb9, 0xcd, + 0x37, 0xa6, 0x0f, 0x1f, 0x89, 0xdc, 0xd6, 0x9a, 0xb0, 0xbf, 0x04, 0xdf, 0x11, 0x12, 0x9c, 0x6f, + 0x5d, 0x3f, 0x6f, 0x57, 0x82, 0x6b, 0xad, 0xc8, 0xca, 0xf2, 0x88, 0x4b, 0x58, 0xbe, 0x77, 0x5d, + 0xb7, 0x2a, 0x61, 0x35, 0xae, 0xa6, 0xac, 0x8d, 0xb8, 0xac, 0x1d, 0xb0, 0xc5, 0x53, 0x93, 0xb5, + 0x59, 0x9e, 0x4a, 0xea, 0xbe, 0x2a, 0xa5, 0x2e, 0xdf, 0xb5, 0x9e, 0xb7, 0x2c, 0x75, 0x35, 0xbe, + 0x9d, 0xf2, 0xf7, 0x15, 0x38, 0xd3, 0x89, 0x87, 0xc9, 0x16, 0xba, 0x00, 0xc3, 0x95, 0x30, 0xd8, + 0xf2, 0x6b, 0xab, 0x5e, 0x4b, 0x9c, 0xd7, 0x94, 0x2c, 0x9a, 0x93, 0x05, 0x38, 0xc5, 0x41, 0x0f, + 0x71, 0xc1, 0xc3, 0x2d, 0x22, 0x23, 0x02, 0xb5, 0x6f, 0x99, 0xec, 0x32, 0x29, 0xf4, 0xde, 0xa1, + 0xaf, 0x7c, 0x7d, 0xea, 0xbe, 0x8f, 0xfd, 0xe1, 0xc3, 0xf7, 0xb9, 0xbf, 0xdf, 0x07, 0x0f, 0xe4, + 0xf2, 0x14, 0xda, 0xfa, 0x6f, 0x18, 0xda, 0xba, 0x56, 0x2e, 0xa4, 0xc8, 0x75, 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, 0x5d, 0x91, 0x05, 0x38, 0xc5, 0xe1, 0x47, 0xe8, 0x2d, 0xaf, + 0xdd, 0x48, 0x84, 0xa1, 0x4c, 0x3b, 0x42, 0x33, 0x30, 0x96, 0xe5, 0xe8, 0x6f, 0x39, 0x80, 0x3a, + 0xb9, 0x8a, 0x85, 0xb8, 0x71, 0x14, 0xe3, 0x30, 0x7b, 0xf6, 0x96, 0x76, 0x08, 0xd7, 0x7a, 0x9a, + 0xd3, 0x0e, 0xed, 0x9b, 0x7e, 0x34, 0xdd, 0x87, 0xf8, 0xe1, 0xa0, 0x07, 0x1b, 0x1a, 0x33, 0xb5, + 0x54, 0x2a, 0x24, 0x8e, 0xb9, 0x39, 0x4e, 0x37, 0xb5, 0x30, 0x30, 0x96, 0xe5, 0x68, 0x0a, 0x8a, + 0x24, 0x8a, 0xc2, 0x48, 0x9c, 0xb5, 0xd9, 0x34, 0xbe, 0x44, 0x01, 0x98, 0xc3, 0xdd, 0x1f, 0x15, + 0xa0, 0xd4, 0xed, 0x74, 0x82, 0x7e, 0x4b, 0x3b, 0x57, 0x8b, 0x93, 0x93, 0x38, 0xf8, 0x85, 0x47, + 0x77, 0x26, 0xca, 0x1e, 0x00, 0xbb, 0x9c, 0xb0, 0x45, 0x29, 0xce, 0x36, 0x70, 0xf2, 0x8b, 0xda, + 0x09, 0x5b, 0x27, 0x91, 0xb3, 0xc1, 0x6f, 0x99, 0x1b, 0xfc, 0xba, 0xed, 0x4e, 0xe9, 0xdb, 0xfc, + 0x1f, 0x15, 0xe1, 0x94, 0x2c, 0x2d, 0x13, 0xba, 0x55, 0x3e, 0xd7, 0x26, 0xd1, 0x2e, 0xfa, 0x03, + 0x07, 0x4e, 0x7b, 0x59, 0xd3, 0x8d, 0x4f, 0x8e, 0x60, 0xa0, 0x35, 0xae, 0xd3, 0x33, 0x39, 0x1c, + 0xf9, 0x40, 0x5f, 0x14, 0x03, 0x7d, 0x3a, 0x0f, 0xa5, 0x8b, 0xdd, 0x3d, 0xb7, 0x03, 0xe8, 0x19, + 0x18, 0x95, 0x70, 0x66, 0xee, 0xe1, 0x4b, 0x5c, 0x19, 0xb7, 0x67, 0xb4, 0x32, 0x6c, 0x60, 0xd2, + 0x9a, 0x09, 0x69, 0xb6, 0x1a, 0x5e, 0x42, 0x34, 0x43, 0x91, 0xaa, 0xb9, 0xa1, 0x95, 0x61, 0x03, + 0x13, 0x3d, 0x06, 0x03, 0x41, 0x58, 0x25, 0x4b, 0x55, 0x61, 0x20, 0x1e, 0x17, 0x75, 0x06, 0xae, + 0x30, 0x28, 0x16, 0xa5, 0xe8, 0xd1, 0xd4, 0x1a, 0x57, 0x64, 0x4b, 0x68, 0x24, 0xcf, 0x12, 0x87, + 0xfe, 0x8e, 0x03, 0xc3, 0xb4, 0xc6, 0xc6, 0x6e, 0x8b, 0xd0, 0xbd, 0x8d, 0x7e, 0x91, 0xea, 0xd1, + 0x7c, 0x91, 0x2b, 0x92, 0x8d, 0x69, 0xea, 0x18, 0x56, 0xf0, 0xb7, 0xde, 0x9e, 0x1a, 0x92, 0x3f, + 0x70, 0xda, 0xaa, 0xc9, 0x45, 0xb8, 0xbf, 0xeb, 0xd7, 0x3c, 0x90, 0x2b, 0xe0, 0xaf, 0xc0, 0xb8, + 0xd9, 0x88, 0x03, 0xf9, 0x01, 0xfe, 0xb1, 0xb6, 0xec, 0x78, 0xbf, 0x84, 0x3c, 0xbb, 0x67, 0xda, + 0xac, 0x9a, 0x0c, 0xf3, 0x62, 0xea, 0x99, 0x93, 0x61, 0x5e, 0x4c, 0x86, 0x79, 0xf7, 0xf7, 0x9c, + 0x74, 0x69, 0x6a, 0x6a, 0x1e, 0xdd, 0x98, 0xdb, 0x51, 0x43, 0x08, 0x62, 0xb5, 0x31, 0x5f, 0xc5, + 0x2b, 0x98, 0xc2, 0xd1, 0x17, 0x35, 0xe9, 0x48, 0xab, 0xb5, 0x85, 0x5b, 0xc3, 0x92, 0x89, 0xde, + 0x20, 0xdc, 0x29, 0xff, 0x44, 0x01, 0xce, 0x36, 0xc1, 0xfd, 0x42, 0x01, 0x1e, 0xda, 0x57, 0x69, + 0xcd, 0x6d, 0xb8, 0x73, 0xcf, 0x1b, 0x4e, 0xb7, 0xb5, 0x88, 0xb4, 0xc2, 0xab, 0x78, 0x45, 0x7c, + 0x2f, 0xb5, 0xad, 0x61, 0x0e, 0xc6, 0xb2, 0x9c, 0xaa, 0x0e, 0xdb, 0x64, 0x77, 0x21, 0x8c, 0x9a, + 0x5e, 0x22, 0xa4, 0x83, 0x52, 0x1d, 0x96, 0x65, 0x01, 0x4e, 0x71, 0xdc, 0x3f, 0x70, 0x20, 0xdb, + 0x00, 0xe4, 0xc1, 0x78, 0x3b, 0x26, 0x11, 0xdd, 0x52, 0xcb, 0xa4, 0x12, 0x11, 0x39, 0x3d, 0x1f, + 0x9d, 0xe6, 0xde, 0x7e, 0xda, 0xc3, 0xe9, 0x4a, 0x18, 0x91, 0xe9, 0x9d, 0xa7, 0xa6, 0x39, 0xc6, + 0x32, 0xd9, 0x2d, 0x93, 0x06, 0xa1, 0x34, 0x66, 0xd1, 0xad, 0xbd, 0xa9, 0xf1, 0xab, 0x06, 0x01, + 0x9c, 0x21, 0x48, 0x59, 0xb4, 0xbc, 0x38, 0xbe, 0x11, 0x46, 0x55, 0xc1, 0xa2, 0x70, 0x60, 0x16, + 0xeb, 0x06, 0x01, 0x9c, 0x21, 0xe8, 0x7e, 0x9f, 0x1e, 0x1f, 0x75, 0xad, 0x15, 0x7d, 0x9d, 0xea, + 0x3e, 0x14, 0x32, 0xdb, 0x08, 0x37, 0xe7, 0xc2, 0x20, 0xf1, 0xfc, 0x80, 0xc8, 0x60, 0x81, 0x0d, + 0x4b, 0x3a, 0xb2, 0x41, 0x3b, 0xb5, 0xe1, 0x77, 0x96, 0xe1, 0x9c, 0xb6, 0x50, 0x1d, 0x67, 0xb3, + 0x11, 0x6e, 0x66, 0xbd, 0x80, 0x14, 0x09, 0xb3, 0x12, 0xf7, 0x27, 0x0e, 0x9c, 0xeb, 0xa2, 0x8c, + 0xa3, 0x2f, 0x3b, 0x30, 0xb6, 0xf9, 0x53, 0xd1, 0x37, 0xb3, 0x19, 0xe8, 0xfd, 0x30, 0x4e, 0x01, + 0x74, 0x27, 0x12, 0x73, 0xb3, 0x60, 0x7a, 0xa8, 0x66, 0x8d, 0x52, 0x9c, 0xc1, 0x76, 0x7f, 0xb5, + 0x00, 0x39, 0x5c, 0xd0, 0x93, 0x30, 0x44, 0x82, 0x6a, 0x2b, 0xf4, 0x83, 0x44, 0x08, 0x23, 0x25, + 0xf5, 0x2e, 0x09, 0x38, 0x56, 0x18, 0xe2, 0xfc, 0x21, 0x06, 0xa6, 0xd0, 0x71, 0xfe, 0x10, 0x2d, + 0x4f, 0x71, 0x50, 0x0d, 0x26, 0x3c, 0xee, 0x5f, 0x61, 0x73, 0x8f, 0x4d, 0xd3, 0xbe, 0x83, 0x4c, + 0xd3, 0xd3, 0xcc, 0xfd, 0x99, 0x21, 0x81, 0x3b, 0x88, 0xa2, 0xf7, 0xc0, 0x48, 0x3b, 0x26, 0xe5, + 0xf9, 0xe5, 0xb9, 0x88, 0x54, 0xf9, 0xa9, 0x58, 0xf3, 0xfb, 0x5d, 0x4d, 0x8b, 0xb0, 0x8e, 0xe7, + 0xfe, 0x53, 0x07, 0x06, 0x67, 0xbd, 0xca, 0x76, 0xb8, 0xb5, 0x45, 0x87, 0xa2, 0xda, 0x8e, 0x52, + 0xc3, 0x96, 0x36, 0x14, 0xf3, 0x02, 0x8e, 0x15, 0x06, 0xda, 0x80, 0x01, 0xbe, 0xe0, 0xc5, 0xb2, + 0xfb, 0x39, 0xad, 0x3f, 0x2a, 0x8e, 0x87, 0x4d, 0x87, 0x76, 0xe2, 0x37, 0xa6, 0x79, 0x1c, 0xcf, + 0xf4, 0x52, 0x90, 0xac, 0x45, 0xe5, 0x24, 0xf2, 0x83, 0xda, 0x2c, 0xd0, 0xed, 0x62, 0x81, 0xd1, + 0xc0, 0x82, 0x16, 0xed, 0x46, 0xd3, 0xbb, 0x29, 0xd9, 0x09, 0xf1, 0xa3, 0xba, 0xb1, 0x9a, 0x16, + 0x61, 0x1d, 0xcf, 0xfd, 0x7d, 0x07, 0x86, 0x67, 0xbd, 0xd8, 0xaf, 0xfc, 0x19, 0x12, 0x3e, 0x2f, + 0x41, 0x71, 0xce, 0xab, 0xd4, 0x09, 0xba, 0x9a, 0x3d, 0xf4, 0x8e, 0x5c, 0x7c, 0x3c, 0x8f, 0x8d, + 0x3a, 0x00, 0xeb, 0x9c, 0xc6, 0xba, 0x1d, 0x8d, 0xdd, 0xb7, 0x1d, 0x18, 0x9f, 0x6b, 0xf8, 0x24, + 0x48, 0xe6, 0x48, 0x94, 0xb0, 0x81, 0xab, 0xc1, 0x44, 0x45, 0x41, 0x0e, 0x33, 0x74, 0x6c, 0xb6, + 0xce, 0x65, 0x48, 0xe0, 0x0e, 0xa2, 0xa8, 0x0a, 0x27, 0x38, 0x2c, 0x5d, 0x15, 0x07, 0x1a, 0x3f, + 0x66, 0x1d, 0x9d, 0x33, 0x29, 0xe0, 0x2c, 0x49, 0xf7, 0xc7, 0x0e, 0x9c, 0x9b, 0x6b, 0xb4, 0xe3, + 0x84, 0x44, 0xd7, 0x85, 0x34, 0x92, 0xea, 0x2d, 0xfa, 0x08, 0x0c, 0x35, 0xa5, 0xc7, 0xd6, 0xb9, + 0xc3, 0x04, 0x66, 0xf2, 0x8c, 0x62, 0xd3, 0xc6, 0xac, 0x6d, 0xbe, 0x4c, 0x2a, 0xc9, 0x2a, 0x49, + 0xbc, 0x34, 0xbc, 0x20, 0x85, 0x61, 0x45, 0x15, 0xb5, 0xa0, 0x3f, 0x6e, 0x91, 0x8a, 0xbd, 0xe8, + 0x2e, 0xd9, 0x87, 0x72, 0x8b, 0x54, 0x52, 0xb9, 0xce, 0x7c, 0x8d, 0x8c, 0x93, 0xfb, 0xbf, 0x1c, + 0x78, 0xa0, 0x4b, 0x7f, 0x57, 0xfc, 0x38, 0x41, 0x2f, 0x76, 0xf4, 0x79, 0xba, 0xb7, 0x3e, 0xd3, + 0xda, 0xac, 0xc7, 0x4a, 0x20, 0x48, 0x88, 0xd6, 0xdf, 0x8f, 0x42, 0xd1, 0x4f, 0x48, 0x53, 0x9a, + 0xa1, 0x2d, 0x18, 0x8c, 0xba, 0xf4, 0x65, 0x76, 0x4c, 0xc6, 0xf8, 0x2d, 0x51, 0x7e, 0x98, 0xb3, + 0x75, 0xb7, 0x61, 0x60, 0x2e, 0x6c, 0xb4, 0x9b, 0x41, 0x6f, 0x91, 0x32, 0xc9, 0x6e, 0x8b, 0x64, + 0xf7, 0x48, 0xa6, 0xfe, 0xb3, 0x12, 0x69, 0x38, 0xea, 0xcb, 0x37, 0x1c, 0xb9, 0xff, 0xcc, 0x01, + 0xba, 0xaa, 0xaa, 0xbe, 0xf0, 0x24, 0x72, 0x72, 0x9c, 0xe1, 0x43, 0x3a, 0xb9, 0xdb, 0x7b, 0x53, + 0x63, 0x0a, 0x51, 0xa3, 0xff, 0x12, 0x0c, 0xc4, 0xec, 0x48, 0x2e, 0xda, 0xb0, 0x20, 0xf5, 0x67, + 0x7e, 0x50, 0xbf, 0xbd, 0x37, 0xd5, 0x53, 0xd8, 0xe6, 0xb4, 0xa2, 0x2d, 0x9c, 0x9e, 0x82, 0x2a, + 0x55, 0xf8, 0x9a, 0x24, 0x8e, 0xbd, 0x9a, 0x3c, 0xe1, 0x29, 0x85, 0x6f, 0x95, 0x83, 0xb1, 0x2c, + 0x77, 0xbf, 0xe4, 0xc0, 0x98, 0xda, 0xbc, 0xa8, 0xfa, 0x8e, 0xae, 0xe8, 0xdb, 0x1c, 0x9f, 0x29, + 0x0f, 0x75, 0x91, 0x38, 0x62, 0x23, 0xdf, 0x7f, 0x17, 0x7c, 0x37, 0x8c, 0x56, 0x49, 0x8b, 0x04, + 0x55, 0x12, 0x54, 0xe8, 0xf1, 0x9b, 0xce, 0x90, 0xe1, 0xd9, 0x09, 0x7a, 0xde, 0x9c, 0xd7, 0xe0, + 0xd8, 0xc0, 0x72, 0xbf, 0xe1, 0xc0, 0xfd, 0x8a, 0x5c, 0x99, 0x24, 0x98, 0x24, 0xd1, 0xae, 0x0a, + 0xd3, 0x3c, 0xd8, 0x6e, 0x75, 0x9d, 0xea, 0xbf, 0x49, 0xc4, 0x99, 0x1f, 0x6e, 0xbb, 0x1a, 0xe1, + 0xda, 0x32, 0x23, 0x82, 0x25, 0x35, 0xf7, 0x97, 0xfb, 0xe0, 0xb4, 0xde, 0x48, 0x25, 0x60, 0x3e, + 0xee, 0x00, 0xa8, 0x11, 0xa0, 0x1b, 0x72, 0x9f, 0x1d, 0xdf, 0x95, 0xf1, 0xa5, 0x52, 0x11, 0xa4, + 0xc0, 0x31, 0xd6, 0xd8, 0xa2, 0xe7, 0x61, 0x74, 0x87, 0x2e, 0x0a, 0xb2, 0x4a, 0xd5, 0x85, 0xb8, + 0xd4, 0xc7, 0x9a, 0x31, 0x95, 0xf7, 0x31, 0xaf, 0xa5, 0x78, 0xa9, 0x39, 0x40, 0x03, 0xc6, 0xd8, + 0x20, 0x45, 0x4f, 0x3a, 0x63, 0x91, 0xfe, 0x49, 0x84, 0x4d, 0xfc, 0x43, 0x16, 0xfb, 0x98, 0xfd, + 0xea, 0xb3, 0x27, 0x6f, 0xed, 0x4d, 0x8d, 0x19, 0x20, 0x6c, 0x36, 0xc2, 0x7d, 0x1e, 0xd8, 0x58, + 0xf8, 0x41, 0x9b, 0xac, 0x05, 0xe8, 0x11, 0x69, 0xa3, 0xe3, 0x7e, 0x15, 0x25, 0x39, 0x74, 0x3b, + 0x1d, 0x3d, 0xcb, 0x6e, 0x79, 0x7e, 0x83, 0x85, 0x2f, 0x52, 0x2c, 0x75, 0x96, 0x5d, 0x60, 0x50, + 0x2c, 0x4a, 0xdd, 0x69, 0x18, 0x9c, 0xa3, 0x7d, 0x27, 0x11, 0xa5, 0xab, 0x47, 0x1d, 0x8f, 0x19, + 0x51, 0xc7, 0x32, 0xba, 0x78, 0x03, 0xce, 0xcc, 0x45, 0xc4, 0x4b, 0x48, 0xf9, 0xe9, 0xd9, 0x76, + 0x65, 0x9b, 0x24, 0x3c, 0xb4, 0x2b, 0x46, 0xef, 0x83, 0xb1, 0x90, 0x6d, 0x19, 0x2b, 0x61, 0x65, + 0xdb, 0x0f, 0x6a, 0xc2, 0xe4, 0x7a, 0x46, 0x50, 0x19, 0x5b, 0xd3, 0x0b, 0xb1, 0x89, 0xeb, 0xfe, + 0xfb, 0x02, 0x8c, 0xce, 0x45, 0x61, 0x20, 0xc5, 0xe2, 0x31, 0x6c, 0x65, 0x89, 0xb1, 0x95, 0x59, + 0x70, 0x77, 0xea, 0xed, 0xef, 0xb6, 0x9d, 0xa1, 0xd7, 0x95, 0x88, 0xec, 0xb3, 0x75, 0x04, 0x31, + 0xf8, 0x32, 0xda, 0xe9, 0xc7, 0x36, 0x05, 0xa8, 0xfb, 0x1f, 0x1c, 0x98, 0xd0, 0xd1, 0x8f, 0x61, + 0x07, 0x8d, 0xcd, 0x1d, 0xf4, 0x8a, 0xdd, 0xfe, 0x76, 0xd9, 0x36, 0xdf, 0x1e, 0x34, 0xfb, 0xc9, + 0x7c, 0xdd, 0x5f, 0x71, 0x60, 0xf4, 0x86, 0x06, 0x10, 0x9d, 0xb5, 0xad, 0xc4, 0xbc, 0x43, 0x8a, + 0x19, 0x1d, 0x7a, 0x3b, 0xf3, 0x1b, 0x1b, 0x2d, 0xa1, 0x72, 0x3f, 0xae, 0xd4, 0x49, 0xb5, 0xdd, + 0x90, 0xdb, 0xb7, 0x1a, 0xd2, 0xb2, 0x80, 0x63, 0x85, 0x81, 0x5e, 0x84, 0x93, 0x95, 0x30, 0xa8, + 0xb4, 0xa3, 0x88, 0x04, 0x95, 0xdd, 0x75, 0x76, 0x47, 0x42, 0x6c, 0x88, 0xd3, 0xa2, 0xda, 0xc9, + 0xb9, 0x2c, 0xc2, 0xed, 0x3c, 0x20, 0xee, 0x24, 0xc4, 0x9d, 0x05, 0x31, 0xdd, 0xb2, 0xc4, 0x81, + 0x4b, 0x73, 0x16, 0x30, 0x30, 0x96, 0xe5, 0xe8, 0x2a, 0x9c, 0x8b, 0x13, 0x2f, 0x4a, 0xfc, 0xa0, + 0x36, 0x4f, 0xbc, 0x6a, 0xc3, 0x0f, 0xe8, 0x51, 0x22, 0x0c, 0xaa, 0xdc, 0x95, 0xd8, 0x37, 0xfb, + 0xc0, 0xad, 0xbd, 0xa9, 0x73, 0xe5, 0x7c, 0x14, 0xdc, 0xad, 0x2e, 0x7a, 0x09, 0x26, 0x85, 0x3b, + 0x62, 0xab, 0xdd, 0x78, 0x36, 0xdc, 0x8c, 0x2f, 0xfb, 0x31, 0x3d, 0xc7, 0xaf, 0xf8, 0x4d, 0x3f, + 0x61, 0x0e, 0xc3, 0xe2, 0xec, 0xf9, 0x5b, 0x7b, 0x53, 0x93, 0xe5, 0xae, 0x58, 0x78, 0x1f, 0x0a, + 0x08, 0xc3, 0x59, 0x2e, 0xfc, 0x3a, 0x68, 0x0f, 0x32, 0xda, 0x93, 0xb7, 0xf6, 0xa6, 0xce, 0x2e, + 0xe4, 0x62, 0xe0, 0x2e, 0x35, 0xe9, 0x17, 0x4c, 0xfc, 0x26, 0x79, 0x35, 0x0c, 0x08, 0x0b, 0x54, + 0xd1, 0xbe, 0xe0, 0x86, 0x80, 0x63, 0x85, 0x81, 0x5e, 0x4e, 0x67, 0x22, 0x5d, 0x2e, 0x22, 0xe0, + 0xe4, 0xe0, 0x12, 0x8e, 0x1d, 0x4d, 0xae, 0x6b, 0x94, 0x58, 0x24, 0xa5, 0x41, 0x1b, 0x7d, 0xc2, + 0x81, 0xd1, 0x38, 0x09, 0xd5, 0xbd, 0x06, 0x11, 0x71, 0x62, 0x61, 0xda, 0x97, 0x35, 0xaa, 0x5c, + 0xf1, 0xd1, 0x21, 0xd8, 0xe0, 0x8a, 0xde, 0x09, 0xc3, 0x72, 0x02, 0xc7, 0xa5, 0x11, 0xa6, 0x2b, + 0xb1, 0x63, 0x9c, 0x9c, 0xdf, 0x31, 0x4e, 0xcb, 0xa9, 0x2a, 0x7b, 0xa3, 0x4e, 0x02, 0x16, 0x73, + 0xab, 0xa9, 0xb2, 0xd7, 0xeb, 0x24, 0xc0, 0xac, 0xc4, 0xfd, 0x51, 0x1f, 0xa0, 0x4e, 0xc1, 0x87, + 0x96, 0x61, 0xc0, 0xab, 0x24, 0xfe, 0x8e, 0x8c, 0x37, 0x7c, 0x24, 0x4f, 0x29, 0xe0, 0x03, 0x88, + 0xc9, 0x16, 0xa1, 0xf3, 0x9e, 0xa4, 0xd2, 0x72, 0x86, 0x55, 0xc5, 0x82, 0x04, 0x0a, 0xe1, 0x64, + 0xc3, 0x8b, 0x13, 0xd9, 0xc2, 0x2a, 0xfd, 0x90, 0x62, 0xbb, 0xf8, 0xd9, 0xde, 0x3e, 0x15, 0xad, + 0x31, 0x7b, 0x86, 0xae, 0xc7, 0x95, 0x2c, 0x21, 0xdc, 0x49, 0x1b, 0xbd, 0xc9, 0xb4, 0x2b, 0xae, + 0xfa, 0x4a, 0xb5, 0x66, 0xd9, 0x8a, 0xe6, 0xc1, 0x69, 0x1a, 0x9a, 0x95, 0x60, 0x83, 0x35, 0x96, + 0xe8, 0x02, 0x0c, 0xb3, 0x75, 0x43, 0xaa, 0x84, 0xaf, 0xfe, 0xbe, 0x54, 0x09, 0x2e, 0xcb, 0x02, + 0x9c, 0xe2, 0x68, 0x5a, 0x06, 0x5f, 0xf0, 0x5d, 0xb4, 0x0c, 0xf4, 0x0c, 0x14, 0x5b, 0x75, 0x2f, + 0x96, 0x31, 0xec, 0xae, 0x94, 0xda, 0xeb, 0x14, 0xc8, 0x44, 0x93, 0xf6, 0x2d, 0x19, 0x10, 0xf3, + 0x0a, 0xee, 0x3f, 0x07, 0x18, 0x9c, 0x9f, 0x59, 0xdc, 0xf0, 0xe2, 0xed, 0x1e, 0xce, 0x40, 0x74, + 0x19, 0x0a, 0x65, 0x35, 0x2b, 0x48, 0xa5, 0x12, 0x8b, 0x15, 0x06, 0x0a, 0x60, 0xc0, 0x0f, 0xa8, + 0xe4, 0x29, 0x8d, 0xdb, 0xf2, 0x33, 0xa8, 0xf3, 0x1c, 0x33, 0x04, 0x2d, 0x31, 0xea, 0x58, 0x70, + 0x41, 0xaf, 0xc3, 0xb0, 0x27, 0xaf, 0x10, 0x89, 0xfd, 0x7f, 0xd9, 0x86, 0x01, 0x5d, 0x90, 0xd4, + 0x43, 0x98, 0x04, 0x08, 0xa7, 0x0c, 0xd1, 0xc7, 0x1c, 0x18, 0x91, 0x5d, 0xc7, 0x64, 0x4b, 0xf8, + 0xb6, 0x57, 0xed, 0xf5, 0x19, 0x93, 0x2d, 0x1e, 0xdf, 0xa2, 0x01, 0xb0, 0xce, 0xb2, 0xe3, 0xcc, + 0x54, 0xec, 0xe5, 0xcc, 0x84, 0x6e, 0xc0, 0xf0, 0x0d, 0x3f, 0xa9, 0xb3, 0x1d, 0x5e, 0xf8, 0xd4, + 0x16, 0xee, 0xbe, 0xd5, 0x94, 0x5c, 0x3a, 0x62, 0xd7, 0x25, 0x03, 0x9c, 0xf2, 0xa2, 0xcb, 0x81, + 0xfe, 0x60, 0x57, 0xb0, 0xd8, 0xde, 0x30, 0x6c, 0x56, 0x60, 0x05, 0x38, 0xc5, 0xa1, 0x43, 0x3c, + 0x4a, 0x7f, 0x95, 0xc9, 0x2b, 0x6d, 0x2a, 0x5a, 0x44, 0xcc, 0xa2, 0x85, 0x79, 0x25, 0x29, 0xf2, + 0xc1, 0xba, 0xae, 0xf1, 0xc0, 0x06, 0x47, 0x25, 0x3a, 0x87, 0xbb, 0x89, 0x4e, 0xf4, 0x3a, 0x3f, + 0xc3, 0xf1, 0xc3, 0x84, 0xd8, 0x0d, 0x56, 0xec, 0x9c, 0x6f, 0x38, 0x4d, 0x7e, 0xad, 0x21, 0xfd, + 0x8d, 0x35, 0x7e, 0x54, 0x62, 0x84, 0xc1, 0xa5, 0x9b, 0x7e, 0x22, 0x2e, 0x63, 0x28, 0x89, 0xb1, + 0xc6, 0xa0, 0x58, 0x94, 0xf2, 0xd8, 0x0d, 0x3a, 0x09, 0x62, 0xb1, 0x0b, 0x68, 0xb1, 0x1b, 0x0c, + 0x8c, 0x65, 0x39, 0xfa, 0xdb, 0x0e, 0x14, 0xeb, 0x61, 0xb8, 0x1d, 0x97, 0xc6, 0xd8, 0xe4, 0xb0, + 0xa0, 0x53, 0x0b, 0x89, 0x33, 0x7d, 0x99, 0x92, 0x35, 0xaf, 0x97, 0x15, 0x19, 0xec, 0xf6, 0xde, + 0xd4, 0xf8, 0x8a, 0xbf, 0x45, 0x2a, 0xbb, 0x95, 0x06, 0x61, 0x90, 0xb7, 0xde, 0xd6, 0x20, 0x97, + 0x76, 0x48, 0x90, 0x60, 0xde, 0xaa, 0xc9, 0xcf, 0x3a, 0x00, 0x29, 0xa1, 0x1c, 0x27, 0x29, 0x31, + 0xc3, 0x0a, 0x2c, 0x1c, 0xa8, 0x8d, 0xa6, 0xe9, 0x5e, 0xd7, 0x7f, 0xe9, 0xc0, 0x08, 0xed, 0x9c, + 0x14, 0x81, 0x8f, 0xc1, 0x40, 0xe2, 0x45, 0x35, 0x22, 0x1d, 0x05, 0xea, 0x73, 0x6c, 0x30, 0x28, + 0x16, 0xa5, 0x28, 0x80, 0x62, 0xe2, 0xc5, 0xdb, 0x52, 0x8d, 0x5f, 0xb2, 0x36, 0xc4, 0xa9, 0x06, + 0x4f, 0x7f, 0xc5, 0x98, 0xb3, 0x41, 0x8f, 0xc3, 0x10, 0xdd, 0x3a, 0x16, 0xbc, 0x58, 0xc6, 0xee, + 0x8c, 0x52, 0x21, 0xbe, 0x20, 0x60, 0x58, 0x95, 0xba, 0xbf, 0x5a, 0x80, 0xfe, 0x79, 0x7e, 0xa0, + 0x1b, 0x88, 0xc3, 0x76, 0x54, 0x21, 0x42, 0xb1, 0xb7, 0x30, 0xa7, 0x29, 0xdd, 0x32, 0xa3, 0xa9, + 0x1d, 0xa9, 0xd8, 0x6f, 0x2c, 0x78, 0xa1, 0x2f, 0x3a, 0x30, 0x9e, 0x44, 0x5e, 0x10, 0x6f, 0x31, + 0x97, 0x8c, 0x1f, 0x06, 0x62, 0x88, 0x2c, 0xcc, 0xc2, 0x0d, 0x83, 0x6e, 0x39, 0x21, 0xad, 0xd4, + 0x33, 0x64, 0x96, 0xe1, 0x4c, 0x1b, 0xdc, 0x5f, 0x73, 0x00, 0xd2, 0xd6, 0xa3, 0xcf, 0x38, 0x30, + 0xe6, 0xe9, 0x31, 0xa3, 0x62, 0x8c, 0xd6, 0xec, 0xf9, 0x6f, 0x19, 0x59, 0x6e, 0xcb, 0x30, 0x40, + 0xd8, 0x64, 0xec, 0xbe, 0x07, 0x8a, 0x6c, 0x75, 0xb0, 0x43, 0x8f, 0xb0, 0x7d, 0x67, 0x8d, 0x5d, + 0xd2, 0x26, 0x8e, 0x15, 0x86, 0xfb, 0x22, 0x8c, 0x5f, 0xba, 0x49, 0x2a, 0xed, 0x24, 0x8c, 0xb8, + 0xe5, 0xbf, 0xcb, 0x1d, 0x21, 0xe7, 0x50, 0x77, 0x84, 0xbe, 0xe3, 0xc0, 0x88, 0x16, 0x40, 0x48, + 0x77, 0xea, 0xda, 0x5c, 0x99, 0x1b, 0x38, 0xc4, 0x50, 0x2d, 0x5b, 0x09, 0x51, 0xe4, 0x24, 0xd3, + 0x6d, 0x44, 0x81, 0x70, 0xca, 0xf0, 0x0e, 0x01, 0x7e, 0xee, 0xef, 0x3a, 0x70, 0x26, 0x37, 0xda, + 0xf1, 0x1e, 0x37, 0xdb, 0x70, 0xb2, 0x17, 0x7a, 0x70, 0xb2, 0xff, 0xa6, 0x03, 0x29, 0x25, 0x2a, + 0x8a, 0x36, 0xd3, 0x96, 0x6b, 0xa2, 0x48, 0x70, 0x12, 0xa5, 0xe8, 0x75, 0x38, 0x67, 0x7e, 0xc1, + 0x43, 0xfa, 0x5b, 0xf8, 0xe1, 0x34, 0x9f, 0x12, 0xee, 0xc6, 0xc2, 0xfd, 0xaa, 0x03, 0xc5, 0x45, + 0xaf, 0x5d, 0x23, 0x3d, 0x99, 0xcb, 0xa8, 0x1c, 0x8b, 0x88, 0xd7, 0x48, 0xe4, 0xd1, 0x41, 0xc8, + 0x31, 0x2c, 0x60, 0x58, 0x95, 0xa2, 0x19, 0x18, 0x0e, 0x5b, 0xc4, 0xf0, 0x11, 0x3e, 0x22, 0x47, + 0x6f, 0x4d, 0x16, 0xd0, 0x6d, 0x87, 0x71, 0x57, 0x10, 0x9c, 0xd6, 0x72, 0xbf, 0x36, 0x00, 0x23, + 0xda, 0xbd, 0x18, 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, 0x83, 0x03, 0xe7, 0x29, 0x00, 0x73, 0x38, + 0x45, 0xd8, 0x22, 0x49, 0xa5, 0xce, 0x2c, 0xc3, 0x22, 0x7a, 0x70, 0x81, 0x02, 0x30, 0x87, 0xe7, + 0x78, 0x31, 0x8b, 0x47, 0xef, 0xc5, 0x1c, 0xb0, 0xec, 0xc5, 0x44, 0x2d, 0x38, 0x15, 0xc7, 0xf5, + 0xf5, 0xc8, 0xdf, 0xf1, 0x12, 0x92, 0xce, 0xbe, 0xc1, 0x83, 0xf0, 0x39, 0xc7, 0x6e, 0xaa, 0x97, + 0x2f, 0x67, 0xa9, 0xe0, 0x3c, 0xd2, 0xa8, 0x0c, 0x67, 0xfc, 0x20, 0x26, 0x95, 0x76, 0x44, 0x96, + 0x6a, 0x41, 0x18, 0x91, 0xcb, 0x61, 0x4c, 0xc9, 0x89, 0x7b, 0xb6, 0x2a, 0x9e, 0x76, 0x29, 0x0f, + 0x09, 0xe7, 0xd7, 0x45, 0x8b, 0x70, 0xb2, 0xea, 0xc7, 0xde, 0x66, 0x83, 0x94, 0xdb, 0x9b, 0xcd, + 0x90, 0x1f, 0xcd, 0x87, 0x19, 0xc1, 0xfb, 0xa5, 0x1d, 0x69, 0x3e, 0x8b, 0x80, 0x3b, 0xeb, 0xa0, + 0x67, 0x60, 0x34, 0xf6, 0x83, 0x5a, 0x83, 0xcc, 0x46, 0x5e, 0x50, 0xa9, 0x8b, 0x0b, 0xba, 0xca, + 0xde, 0x5e, 0xd6, 0xca, 0xb0, 0x81, 0xc9, 0xd6, 0x3c, 0xaf, 0x93, 0xd1, 0x06, 0x05, 0xb6, 0x28, + 0x45, 0x33, 0x70, 0x42, 0xf6, 0xa1, 0xbc, 0xed, 0xb7, 0x36, 0x56, 0xca, 0x4c, 0x2b, 0x1c, 0x4a, + 0xa3, 0x85, 0x96, 0xcc, 0x62, 0x9c, 0xc5, 0x77, 0x7f, 0xe0, 0xc0, 0xa8, 0x1e, 0x0e, 0x4f, 0x95, + 0x75, 0xa8, 0xcf, 0x2f, 0x94, 0xf9, 0x76, 0x62, 0x4f, 0x69, 0xb8, 0xac, 0x68, 0xa6, 0xe7, 0xed, + 0x14, 0x86, 0x35, 0x9e, 0x3d, 0x5c, 0x6e, 0x7f, 0x04, 0x8a, 0x5b, 0x21, 0xd5, 0x69, 0xfa, 0x4c, + 0x5b, 0xff, 0x02, 0x05, 0x62, 0x5e, 0xe6, 0xfe, 0x37, 0x07, 0xce, 0xe6, 0x47, 0xfa, 0xff, 0x34, + 0x74, 0xf2, 0x22, 0x00, 0xed, 0x8a, 0xb1, 0x2f, 0x68, 0xe9, 0x2d, 0x64, 0x09, 0xd6, 0xb0, 0x7a, + 0xeb, 0xf6, 0xbf, 0x28, 0x80, 0xc6, 0x13, 0x7d, 0xce, 0x81, 0x31, 0xca, 0x76, 0x39, 0xda, 0x34, + 0x7a, 0xbb, 0x66, 0xa7, 0xb7, 0x8a, 0x6c, 0xea, 0xd2, 0x30, 0xc0, 0xd8, 0x64, 0x8e, 0xde, 0x09, + 0xc3, 0x5e, 0xb5, 0x1a, 0x91, 0x38, 0x56, 0xce, 0x41, 0x66, 0xf0, 0x9a, 0x91, 0x40, 0x9c, 0x96, + 0x53, 0x39, 0x5c, 0xaf, 0x6e, 0xc5, 0x54, 0xb4, 0x09, 0xd9, 0xaf, 0xe4, 0x30, 0x65, 0x42, 0xe1, + 0x58, 0x61, 0xa0, 0x6b, 0x70, 0xb6, 0xea, 0x25, 0x1e, 0x57, 0x01, 0x49, 0xb4, 0x1e, 0x85, 0x09, + 0xa9, 0xb0, 0x7d, 0x83, 0x07, 0xb1, 0x9e, 0x17, 0x75, 0xcf, 0xce, 0xe7, 0x62, 0xe1, 0x2e, 0xb5, + 0xdd, 0x5f, 0xea, 0x07, 0xb3, 0x4f, 0xa8, 0x0a, 0x27, 0xb6, 0xa3, 0xcd, 0x39, 0x16, 0xb3, 0x71, + 0x98, 0xd8, 0x09, 0x16, 0xd3, 0xb0, 0x6c, 0x52, 0xc0, 0x59, 0x92, 0x82, 0xcb, 0x32, 0xd9, 0x4d, + 0xbc, 0xcd, 0x43, 0x47, 0x4e, 0x2c, 0x9b, 0x14, 0x70, 0x96, 0x24, 0x7a, 0x0f, 0x8c, 0x6c, 0x47, + 0x9b, 0x72, 0xf7, 0xc8, 0x86, 0xe1, 0x2c, 0xa7, 0x45, 0x58, 0xc7, 0xa3, 0x9f, 0x66, 0x3b, 0xda, + 0xa4, 0x1b, 0xb6, 0x4c, 0x22, 0xa1, 0x3e, 0xcd, 0xb2, 0x80, 0x63, 0x85, 0x81, 0x5a, 0x80, 0xb6, + 0xe5, 0xe8, 0xa9, 0x08, 0x15, 0xb1, 0xc9, 0xf5, 0x1e, 0xe0, 0xc2, 0xae, 0x06, 0x2c, 0x77, 0xd0, + 0xc1, 0x39, 0xb4, 0xd1, 0xf3, 0x70, 0x6e, 0x3b, 0xda, 0x14, 0x7a, 0xcc, 0x7a, 0xe4, 0x07, 0x15, + 0xbf, 0x65, 0x24, 0x8c, 0x98, 0x12, 0xcd, 0x3d, 0xb7, 0x9c, 0x8f, 0x86, 0xbb, 0xd5, 0x77, 0x7f, + 0xab, 0x1f, 0xd8, 0x55, 0x57, 0x2a, 0xa6, 0x9b, 0x24, 0xa9, 0x87, 0xd5, 0xac, 0x6a, 0xb6, 0xca, + 0xa0, 0x58, 0x94, 0xca, 0x00, 0xd8, 0x42, 0x97, 0x00, 0xd8, 0x1b, 0x30, 0x58, 0x27, 0x5e, 0x95, + 0x44, 0xd2, 0xb8, 0xb9, 0x62, 0xe7, 0x72, 0xee, 0x65, 0x46, 0x34, 0xb5, 0x10, 0xf0, 0xdf, 0x31, + 0x96, 0xdc, 0xd0, 0x7b, 0x61, 0x9c, 0xea, 0x58, 0x61, 0x3b, 0x91, 0xfe, 0x09, 0x6e, 0xdc, 0x64, + 0x9b, 0xfd, 0x86, 0x51, 0x82, 0x33, 0x98, 0x68, 0x1e, 0x26, 0x84, 0x2f, 0x41, 0x19, 0x4d, 0xc5, + 0xc0, 0xaa, 0x4c, 0x1e, 0xe5, 0x4c, 0x39, 0xee, 0xa8, 0xc1, 0x02, 0x18, 0xc3, 0x2a, 0x77, 0x27, + 0xeb, 0x01, 0x8c, 0x61, 0x75, 0x17, 0xb3, 0x12, 0xf4, 0x2a, 0x0c, 0xd1, 0xbf, 0x0b, 0x51, 0xd8, + 0x14, 0x66, 0xa3, 0x75, 0x3b, 0xa3, 0x43, 0x79, 0x88, 0x43, 0x2c, 0xd3, 0x3d, 0x67, 0x05, 0x17, + 0xac, 0xf8, 0xd1, 0xa3, 0x94, 0xbe, 0x5d, 0x5e, 0x23, 0x91, 0xbf, 0xb5, 0xcb, 0xf4, 0x99, 0xa1, + 0xf4, 0x28, 0xb5, 0xd4, 0x81, 0x81, 0x73, 0x6a, 0xb9, 0x9f, 0x2b, 0xc0, 0xa8, 0x7e, 0x63, 0xfa, + 0x4e, 0x51, 0xd1, 0x71, 0x3a, 0x29, 0xf8, 0xc1, 0xf9, 0xb2, 0x85, 0x6e, 0xdf, 0x69, 0x42, 0xd4, + 0xa1, 0xdf, 0x6b, 0x0b, 0x45, 0xd6, 0x8a, 0x7d, 0x8e, 0xf5, 0xb8, 0x9d, 0xd4, 0xf9, 0xd5, 0x3a, + 0x16, 0xaf, 0xcc, 0x38, 0xb8, 0x9f, 0xec, 0x83, 0x21, 0x59, 0x88, 0x3e, 0xe1, 0x00, 0xa4, 0x71, + 0x63, 0x42, 0x94, 0xae, 0xdb, 0x08, 0x2a, 0xd2, 0x43, 0xde, 0x34, 0x33, 0xbf, 0x82, 0x63, 0x8d, + 0x2f, 0x4a, 0x60, 0x20, 0xa4, 0x8d, 0xbb, 0x68, 0xef, 0xd6, 0xff, 0x1a, 0x65, 0x7c, 0x91, 0x71, + 0x4f, 0x2d, 0x7a, 0x0c, 0x86, 0x05, 0x2f, 0x7a, 0x38, 0xdd, 0x94, 0xe1, 0x8c, 0xf6, 0xac, 0xdf, + 0x2a, 0x42, 0x32, 0x3d, 0x6b, 0x2a, 0x10, 0x4e, 0x19, 0xba, 0x4f, 0xc1, 0xb8, 0xb9, 0x18, 0xe8, + 0x61, 0x65, 0x73, 0x37, 0x21, 0xdc, 0x14, 0x32, 0xca, 0x0f, 0x2b, 0xb3, 0x14, 0x80, 0x39, 0xdc, + 0xfd, 0xbe, 0x03, 0x90, 0x8a, 0x97, 0x1e, 0xbc, 0x0f, 0x8f, 0xe8, 0x76, 0xbc, 0x6e, 0x27, 0xc2, + 0x37, 0x61, 0x98, 0xfd, 0xc3, 0x16, 0x7a, 0x9f, 0xad, 0xe0, 0x83, 0xb4, 0x9d, 0x62, 0xa9, 0x33, + 0x5d, 0xe3, 0x9a, 0x64, 0x84, 0x53, 0x9e, 0x6e, 0x08, 0x13, 0x59, 0x6c, 0xf4, 0x21, 0x18, 0x8d, + 0xe5, 0xb6, 0x9a, 0xde, 0xff, 0xeb, 0x71, 0xfb, 0xe5, 0xae, 0x3f, 0xad, 0x3a, 0x36, 0x88, 0xb9, + 0x6b, 0x30, 0x60, 0x75, 0x08, 0xdd, 0x6f, 0x39, 0x30, 0xcc, 0xbc, 0xaf, 0xb5, 0xc8, 0x6b, 0xa6, + 0x55, 0xfa, 0xf6, 0x19, 0xf5, 0x18, 0x06, 0xb9, 0xf9, 0x40, 0x46, 0x2d, 0x59, 0x90, 0x32, 0x3c, + 0x59, 0x5f, 0x2a, 0x65, 0xb8, 0x9d, 0x22, 0xc6, 0x92, 0x93, 0xfb, 0xa9, 0x02, 0x0c, 0x2c, 0x05, + 0xad, 0xf6, 0x9f, 0xfb, 0x84, 0x71, 0xab, 0xd0, 0xbf, 0x94, 0x90, 0xa6, 0x99, 0xd7, 0x70, 0x74, + 0xf6, 0x51, 0x3d, 0xa7, 0x61, 0xc9, 0xcc, 0x69, 0x88, 0xbd, 0x1b, 0x32, 0xa8, 0x4f, 0x98, 0xaf, + 0xd3, 0x3b, 0x90, 0x4f, 0xc2, 0xf0, 0x8a, 0xb7, 0x49, 0x1a, 0xcb, 0x64, 0x97, 0xdd, 0x58, 0xe4, + 0x01, 0x26, 0x4e, 0x6a, 0x73, 0x30, 0x82, 0x41, 0xe6, 0x61, 0x9c, 0x61, 0xab, 0xc5, 0x40, 0x4f, + 0x24, 0x24, 0x4d, 0x0a, 0xe5, 0x98, 0x27, 0x12, 0x2d, 0x21, 0x94, 0x86, 0xe5, 0x4e, 0xc3, 0x48, + 0x4a, 0xa5, 0x07, 0xae, 0x3f, 0x29, 0xc0, 0x98, 0x61, 0x85, 0x37, 0x7c, 0x93, 0xce, 0x1d, 0x7d, + 0x93, 0x86, 0xaf, 0xb0, 0x70, 0xaf, 0x7d, 0x85, 0x7d, 0xc7, 0xef, 0x2b, 0x34, 0x3f, 0x52, 0x7f, + 0x4f, 0x1f, 0xa9, 0x01, 0xfd, 0x2b, 0x7e, 0xb0, 0xdd, 0x9b, 0x9c, 0x89, 0x2b, 0x61, 0xab, 0x43, + 0xce, 0x94, 0x29, 0x10, 0xf3, 0x32, 0xa9, 0xb9, 0xf4, 0xe5, 0x6b, 0x2e, 0xee, 0x27, 0x1c, 0x18, + 0x5d, 0xf5, 0x02, 0x7f, 0x8b, 0xc4, 0x09, 0x9b, 0x57, 0xc9, 0x91, 0xde, 0x5c, 0x1b, 0xed, 0x92, + 0x83, 0xe1, 0x2d, 0x07, 0x4e, 0xae, 0x92, 0x66, 0xe8, 0xbf, 0xea, 0xa5, 0x31, 0xb3, 0xb4, 0xed, + 0x75, 0x3f, 0x11, 0x21, 0x82, 0xaa, 0xed, 0x97, 0xfd, 0x04, 0x53, 0xf8, 0x1d, 0x4c, 0xcc, 0xec, + 0x4e, 0x08, 0x3d, 0xa0, 0x69, 0xb7, 0x29, 0xd3, 0x68, 0x58, 0x59, 0x80, 0x53, 0x1c, 0xf7, 0xb7, + 0x1d, 0x18, 0xe4, 0x8d, 0x50, 0x61, 0xc6, 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, + 0xe6, 0x8c, 0x0a, 0x17, 0x4e, 0x8f, 0x2d, 0x0c, 0x8a, 0x45, 0xa9, 0xfb, 0xb5, 0x3e, 0x18, 0x52, + 0xa9, 0xc7, 0x58, 0x62, 0x88, 0x20, 0x08, 0x13, 0x8f, 0x87, 0x61, 0x70, 0x59, 0xfd, 0x21, 0x7b, + 0xa9, 0xcf, 0xa6, 0x67, 0x52, 0xea, 0xdc, 0xb5, 0xa8, 0x0e, 0xa1, 0x5a, 0x09, 0xd6, 0x1b, 0x81, + 0x3e, 0x0a, 0x03, 0x0d, 0x2a, 0x7d, 0xa4, 0xe8, 0xbe, 0x66, 0xb1, 0x39, 0x4c, 0xac, 0x89, 0x96, + 0xa8, 0x11, 0xe2, 0x40, 0x2c, 0xb8, 0x4e, 0xbe, 0x1f, 0x26, 0xb2, 0xad, 0xbe, 0xd3, 0x65, 0xcf, + 0x61, 0xfd, 0xaa, 0xe8, 0x5f, 0x16, 0xd2, 0xf3, 0xe0, 0x55, 0xdd, 0xe7, 0x60, 0x64, 0x95, 0x24, + 0x91, 0x5f, 0x61, 0x04, 0xee, 0x34, 0xb9, 0x7a, 0xd2, 0x1f, 0x3e, 0xcd, 0x26, 0x2b, 0xa5, 0x19, + 0xa3, 0xd7, 0x01, 0x5a, 0x51, 0x48, 0xcf, 0xaf, 0xa4, 0x2d, 0x3f, 0xb6, 0x05, 0x7d, 0x78, 0x5d, + 0xd1, 0xe4, 0xde, 0xf0, 0xf4, 0x37, 0xd6, 0xf8, 0xb9, 0xff, 0xc6, 0x81, 0xe2, 0x6a, 0x3b, 0x21, + 0x37, 0x7b, 0x10, 0x59, 0x07, 0x4e, 0x7f, 0xf0, 0x26, 0x0c, 0x4b, 0xf7, 0x99, 0x3c, 0x70, 0xdb, + 0x88, 0xfa, 0xda, 0x0d, 0x2a, 0x4a, 0xf5, 0x4b, 0xa3, 0x83, 0x24, 0x23, 0x9c, 0xf2, 0x74, 0x3f, + 0x04, 0xa3, 0xac, 0x73, 0x97, 0xc3, 0x06, 0xdd, 0xd8, 0xe9, 0xc7, 0x69, 0xd2, 0xdf, 0x59, 0x8f, + 0x09, 0x43, 0xc2, 0xbc, 0x8c, 0x2e, 0xda, 0x7a, 0xd8, 0xa8, 0xaa, 0xbb, 0x68, 0x6a, 0x4a, 0x5e, + 0x66, 0x50, 0x2c, 0x4a, 0xdd, 0x8f, 0x17, 0x60, 0x84, 0x55, 0x14, 0x02, 0x6f, 0x17, 0x06, 0xeb, + 0x9c, 0x8f, 0xf8, 0x8a, 0x16, 0xfa, 0xaa, 0xb7, 0x5e, 0x3b, 0x4d, 0x72, 0x00, 0x96, 0xfc, 0x28, + 0xeb, 0x1b, 0x9e, 0x9f, 0x50, 0xd6, 0x85, 0xa3, 0x65, 0x7d, 0x9d, 0xb3, 0xc1, 0x92, 0x9f, 0xfb, + 0x0b, 0xc0, 0xee, 0x78, 0x2f, 0x34, 0xbc, 0x1a, 0x1f, 0xb9, 0x70, 0x9b, 0x54, 0x85, 0xd4, 0xd7, + 0x46, 0x8e, 0x42, 0xb1, 0x28, 0xe5, 0xf7, 0x66, 0x93, 0xc8, 0x57, 0xb1, 0xe1, 0xda, 0xbd, 0x59, + 0x06, 0x96, 0x37, 0x01, 0xaa, 0xee, 0x97, 0x0a, 0x00, 0x2c, 0x55, 0x1e, 0xbf, 0x9a, 0xfd, 0x73, + 0x32, 0x8c, 0xcb, 0xf4, 0xb2, 0xaa, 0x30, 0x2e, 0x76, 0xf9, 0x5c, 0x0f, 0xdf, 0xd2, 0xaf, 0x6c, + 0x14, 0xf6, 0xbf, 0xb2, 0x81, 0x5a, 0x30, 0x18, 0xb6, 0x13, 0xaa, 0x2d, 0x0b, 0x75, 0xc3, 0x42, + 0x90, 0xc1, 0x1a, 0x27, 0xc8, 0xef, 0x39, 0x88, 0x1f, 0x58, 0xb2, 0x41, 0xcf, 0xc0, 0x50, 0x2b, + 0x0a, 0x6b, 0x54, 0x7b, 0x10, 0x0a, 0xc6, 0x83, 0x52, 0x23, 0x5b, 0x17, 0xf0, 0xdb, 0xda, 0xff, + 0x58, 0x61, 0xbb, 0x7f, 0x38, 0xc1, 0xc7, 0x45, 0xcc, 0xbd, 0x49, 0x28, 0xf8, 0xd2, 0x36, 0x06, + 0x82, 0x44, 0x61, 0x69, 0x1e, 0x17, 0xfc, 0xaa, 0x5a, 0xd8, 0x85, 0xae, 0x0b, 0xfb, 0x3d, 0x30, + 0x52, 0xf5, 0xe3, 0x56, 0xc3, 0xdb, 0xbd, 0x92, 0x63, 0x98, 0x9c, 0x4f, 0x8b, 0xb0, 0x8e, 0x87, + 0x9e, 0x14, 0x17, 0x74, 0xfa, 0x0d, 0x63, 0x94, 0xbc, 0xa0, 0x93, 0x5e, 0xfd, 0xe7, 0x77, 0x73, + 0xb2, 0x29, 0x12, 0x8a, 0x3d, 0xa7, 0x48, 0xc8, 0xea, 0x82, 0x03, 0xc7, 0xaf, 0x0b, 0xbe, 0x0f, + 0xc6, 0xe4, 0x4f, 0xa6, 0xa0, 0x95, 0x4e, 0xb3, 0xd6, 0x2b, 0x43, 0xfc, 0x86, 0x5e, 0x88, 0x4d, + 0xdc, 0x74, 0xd2, 0x0e, 0xf6, 0x3a, 0x69, 0x2f, 0x02, 0x6c, 0x86, 0xed, 0xa0, 0xea, 0x45, 0xbb, + 0x4b, 0xf3, 0x22, 0x9c, 0x57, 0xa9, 0x9e, 0xb3, 0xaa, 0x04, 0x6b, 0x58, 0xfa, 0x44, 0x1f, 0xbe, + 0xc3, 0x44, 0xff, 0x10, 0x0c, 0xb3, 0xd0, 0x67, 0x52, 0x9d, 0x49, 0x44, 0xfc, 0xd5, 0x41, 0xe2, + 0x49, 0x53, 0x99, 0x2b, 0x89, 0xe0, 0x94, 0x1e, 0x7a, 0x09, 0x60, 0xcb, 0x0f, 0xfc, 0xb8, 0xce, + 0xa8, 0x8f, 0x1c, 0x98, 0xba, 0xea, 0xe7, 0x82, 0xa2, 0x82, 0x35, 0x8a, 0xe8, 0x45, 0x38, 0x49, + 0xe2, 0xc4, 0x6f, 0x7a, 0x09, 0xa9, 0xaa, 0x2b, 0xad, 0x25, 0x66, 0x4d, 0x55, 0xc1, 0xe7, 0x97, + 0xb2, 0x08, 0xb7, 0xf3, 0x80, 0xb8, 0x93, 0x90, 0xb1, 0x22, 0x27, 0x0f, 0xb2, 0x22, 0xd1, 0xff, + 0x74, 0xe0, 0x64, 0x44, 0x78, 0x50, 0x4e, 0xac, 0x1a, 0x76, 0x86, 0x89, 0xe3, 0x8a, 0x8d, 0x2c, + 0xf4, 0x2a, 0xdd, 0x0c, 0xce, 0x72, 0xe1, 0xaa, 0x13, 0x91, 0xbd, 0xef, 0x28, 0xbf, 0x9d, 0x07, + 0x7c, 0xeb, 0xed, 0xa9, 0xa9, 0xce, 0xd7, 0x10, 0x14, 0x71, 0xba, 0xf2, 0xfe, 0xfa, 0xdb, 0x53, + 0x13, 0xf2, 0x77, 0x3a, 0x68, 0x1d, 0x9d, 0xa4, 0xdb, 0x6a, 0x2b, 0xac, 0x2e, 0xad, 0x8b, 0x40, + 0x39, 0xb5, 0xad, 0xae, 0x53, 0x20, 0xe6, 0x65, 0xe8, 0x71, 0x18, 0xaa, 0x7a, 0xa4, 0x19, 0x06, + 0x2a, 0x9f, 0x30, 0x3b, 0x4f, 0xcc, 0x0b, 0x18, 0x56, 0xa5, 0xf4, 0x14, 0x13, 0x88, 0x2d, 0xa5, + 0xf4, 0x80, 0xad, 0x53, 0x8c, 0xdc, 0xa4, 0x38, 0x57, 0xf9, 0x0b, 0x2b, 0x4e, 0xa8, 0x01, 0x03, + 0x3e, 0x33, 0x95, 0x88, 0x58, 0x5c, 0x0b, 0xf6, 0x19, 0x6e, 0x7a, 0x91, 0x91, 0xb8, 0x4c, 0xf4, + 0x0b, 0x1e, 0xfa, 0x5e, 0x73, 0xe2, 0x78, 0xf6, 0x9a, 0xc7, 0x61, 0xa8, 0x52, 0xf7, 0x1b, 0xd5, + 0x88, 0x04, 0xa5, 0x09, 0x66, 0x33, 0x60, 0x23, 0x31, 0x27, 0x60, 0x58, 0x95, 0xa2, 0xbf, 0x04, + 0x63, 0x61, 0x3b, 0x61, 0xa2, 0x85, 0x8e, 0x53, 0x5c, 0x3a, 0xc9, 0xd0, 0x59, 0x64, 0xd5, 0x9a, + 0x5e, 0x80, 0x4d, 0x3c, 0x2a, 0xe2, 0xeb, 0x61, 0xcc, 0x32, 0x23, 0x31, 0x11, 0x7f, 0xd6, 0x14, + 0xf1, 0x97, 0xb5, 0x32, 0x6c, 0x60, 0xa2, 0xaf, 0x38, 0x70, 0xb2, 0x99, 0x3d, 0x42, 0x96, 0xce, + 0xb1, 0x91, 0x29, 0xdb, 0x38, 0x6a, 0x64, 0x48, 0xf3, 0x98, 0xf8, 0x0e, 0x30, 0xee, 0x6c, 0x04, + 0xcb, 0x51, 0x16, 0xef, 0x06, 0x95, 0x7a, 0x14, 0x06, 0x66, 0xf3, 0xee, 0xb7, 0x75, 0x33, 0x8f, + 0xad, 0xed, 0x3c, 0x16, 0xb3, 0xf7, 0xdf, 0xda, 0x9b, 0x3a, 0x93, 0x5b, 0x84, 0xf3, 0x1b, 0x35, + 0x39, 0x0f, 0x67, 0xf3, 0xe5, 0xc3, 0x9d, 0xce, 0x3c, 0x7d, 0xfa, 0x99, 0x67, 0x01, 0xee, 0xef, + 0xda, 0x28, 0xba, 0xd3, 0x48, 0x6d, 0xd3, 0x31, 0x77, 0x9a, 0x0e, 0xed, 0x70, 0x1c, 0x46, 0xf5, + 0xe7, 0x33, 0xdc, 0xff, 0xd3, 0x07, 0x90, 0x5a, 0xea, 0x91, 0x07, 0xe3, 0xdc, 0x2b, 0xb0, 0x34, + 0x7f, 0xe8, 0x9c, 0x02, 0x73, 0x06, 0x01, 0x9c, 0x21, 0x88, 0x9a, 0x80, 0x38, 0x84, 0xff, 0x3e, + 0x8c, 0x77, 0x97, 0x39, 0x43, 0xe7, 0x3a, 0x88, 0xe0, 0x1c, 0xc2, 0xb4, 0x47, 0x49, 0xb8, 0x4d, + 0x82, 0xab, 0x78, 0xe5, 0x30, 0x89, 0x29, 0xb8, 0x3f, 0xd0, 0x20, 0x80, 0x33, 0x04, 0x91, 0x0b, + 0x03, 0xcc, 0x3a, 0x24, 0xa3, 0xd7, 0x99, 0x78, 0x61, 0x9a, 0x46, 0x8c, 0x45, 0x09, 0xfa, 0x92, + 0x03, 0xe3, 0x32, 0xbf, 0x06, 0xb3, 0xc7, 0xca, 0xb8, 0xf5, 0xab, 0xb6, 0x3c, 0x2d, 0x97, 0x74, + 0xea, 0x69, 0x54, 0xa8, 0x01, 0x8e, 0x71, 0xa6, 0x11, 0xee, 0xf3, 0x70, 0x2a, 0xa7, 0xba, 0x95, + 0x33, 0xf5, 0x77, 0x1c, 0x18, 0xd1, 0xd2, 0x3e, 0xa2, 0xd7, 0x61, 0x38, 0x2c, 0x5b, 0x0f, 0x45, + 0x5c, 0x2b, 0x77, 0x84, 0x22, 0x2a, 0x10, 0x4e, 0x19, 0xf6, 0x12, 0x41, 0x99, 0x9b, 0xa3, 0xf2, + 0x1e, 0x37, 0xfb, 0xc0, 0x11, 0x94, 0xbf, 0x54, 0x84, 0x94, 0xd2, 0x01, 0xf3, 0xbe, 0xa4, 0xf1, + 0x96, 0x85, 0x7d, 0xe3, 0x2d, 0xab, 0x70, 0xc2, 0x63, 0xde, 0xec, 0x43, 0x66, 0x7b, 0xe1, 0x59, + 0x7f, 0x4d, 0x0a, 0x38, 0x4b, 0x92, 0x72, 0x89, 0xd3, 0xaa, 0x8c, 0x4b, 0xff, 0x81, 0xb9, 0x94, + 0x4d, 0x0a, 0x38, 0x4b, 0x12, 0xbd, 0x08, 0xa5, 0x0a, 0xbb, 0xbd, 0xcc, 0xfb, 0xb8, 0xb4, 0x75, + 0x25, 0x4c, 0xd6, 0x23, 0x12, 0x93, 0x20, 0x11, 0x79, 0xdd, 0x1e, 0x16, 0xa3, 0x50, 0x9a, 0xeb, + 0x82, 0x87, 0xbb, 0x52, 0xa0, 0xc7, 0x14, 0xe6, 0x0e, 0xf7, 0x93, 0x5d, 0x26, 0x44, 0x44, 0x9c, + 0x80, 0x3a, 0xa6, 0x94, 0xf5, 0x42, 0x6c, 0xe2, 0xa2, 0x5f, 0x74, 0x60, 0xac, 0x21, 0x1d, 0x06, + 0xb8, 0xdd, 0x90, 0x49, 0x4a, 0xb1, 0x95, 0xe9, 0xb7, 0xa2, 0x53, 0xe6, 0xba, 0x84, 0x01, 0xc2, + 0x26, 0xef, 0x6c, 0xea, 0x9d, 0xa1, 0x1e, 0x53, 0xef, 0x7c, 0xdf, 0x81, 0x89, 0x2c, 0x37, 0xb4, + 0x0d, 0x0f, 0x35, 0xbd, 0x68, 0x7b, 0x29, 0xd8, 0x8a, 0xd8, 0x2d, 0x95, 0x84, 0x4f, 0x86, 0x99, + 0xad, 0x84, 0x44, 0xf3, 0xde, 0x2e, 0x77, 0xc0, 0x16, 0xd5, 0x2b, 0x57, 0x0f, 0xad, 0xee, 0x87, + 0x8c, 0xf7, 0xa7, 0x85, 0xca, 0x70, 0x86, 0x22, 0xb0, 0xcc, 0x7c, 0x7e, 0x18, 0xa4, 0x4c, 0x0a, + 0x8c, 0x89, 0x8a, 0x94, 0x5c, 0xcd, 0x43, 0xc2, 0xf9, 0x75, 0xdd, 0x4b, 0x30, 0xc0, 0x2f, 0x0d, + 0xde, 0x95, 0x07, 0xcb, 0xfd, 0xd7, 0x05, 0x90, 0x8a, 0xe1, 0x9f, 0x6f, 0x87, 0x20, 0xdd, 0x44, + 0x23, 0x66, 0x52, 0x12, 0xd6, 0x0e, 0xb6, 0x89, 0x8a, 0x1c, 0x98, 0xa2, 0x84, 0x6a, 0xcc, 0xe4, + 0xa6, 0x9f, 0xcc, 0x85, 0x55, 0x69, 0xe3, 0x60, 0x1a, 0xf3, 0x25, 0x01, 0xc3, 0xaa, 0xd4, 0xfd, + 0x84, 0x03, 0x63, 0xb4, 0x97, 0x8d, 0x06, 0x69, 0x94, 0x13, 0xd2, 0x8a, 0x51, 0x0c, 0xc5, 0x98, + 0xfe, 0x63, 0xcf, 0x14, 0x98, 0x5e, 0x34, 0x25, 0x2d, 0xcd, 0x5d, 0x44, 0x99, 0x60, 0xce, 0xcb, + 0xfd, 0x76, 0x1f, 0x0c, 0xab, 0xc1, 0xee, 0xc1, 0xa0, 0x7b, 0x31, 0x4d, 0x4f, 0xcb, 0x25, 0x70, + 0x49, 0x4b, 0x4d, 0x7b, 0x9b, 0x0e, 0x5d, 0xb0, 0xcb, 0xf3, 0x74, 0xa4, 0x79, 0x6a, 0x9f, 0x34, + 0x9d, 0xdd, 0x67, 0xf5, 0xf9, 0xa7, 0xe1, 0x0b, 0xaf, 0xf7, 0x4d, 0x3d, 0xd6, 0xa0, 0xdf, 0xd6, + 0x6e, 0xa6, 0x1c, 0xa9, 0xdd, 0x83, 0x0c, 0x32, 0x2f, 0x17, 0x15, 0x7b, 0x7a, 0xb9, 0xe8, 0x09, + 0xe8, 0x27, 0x41, 0xbb, 0xc9, 0x54, 0xa5, 0x61, 0x76, 0x44, 0xe8, 0xbf, 0x14, 0xb4, 0x9b, 0x66, + 0xcf, 0x18, 0x0a, 0x7a, 0x3f, 0x8c, 0x54, 0x49, 0x5c, 0x89, 0x7c, 0x96, 0x7c, 0x42, 0x58, 0x76, + 0x1e, 0x64, 0xe6, 0xb2, 0x14, 0x6c, 0x56, 0xd4, 0x2b, 0xb8, 0xaf, 0xc2, 0xc0, 0x7a, 0xa3, 0x5d, + 0xf3, 0x03, 0xd4, 0x82, 0x01, 0x9e, 0x8a, 0x42, 0xec, 0xf6, 0x16, 0xce, 0x9d, 0x5c, 0x54, 0x68, + 0x71, 0x30, 0xfc, 0xbe, 0xb1, 0xe0, 0xe3, 0x7e, 0xbc, 0x00, 0xf4, 0x68, 0xbe, 0x38, 0x87, 0xfe, + 0x6a, 0xc7, 0x43, 0x3d, 0x3f, 0x93, 0xf3, 0x50, 0xcf, 0x18, 0x43, 0xce, 0x79, 0xa3, 0xa7, 0x01, + 0x63, 0xcc, 0x3d, 0x23, 0xf7, 0x40, 0xa1, 0x56, 0x3f, 0xdd, 0x63, 0xf6, 0x06, 0xbd, 0xaa, 0xd8, + 0x11, 0x74, 0x10, 0x36, 0x89, 0xa3, 0x55, 0x38, 0xc5, 0xb3, 0x9c, 0xce, 0x93, 0x86, 0xb7, 0x9b, + 0xc9, 0x66, 0xf6, 0x80, 0x7c, 0x7b, 0x6d, 0xbe, 0x13, 0x05, 0xe7, 0xd5, 0x73, 0x7f, 0xa7, 0x1f, + 0x34, 0xa7, 0x48, 0x0f, 0xab, 0xe5, 0x95, 0x8c, 0x0b, 0x6c, 0xd5, 0x8a, 0x0b, 0x4c, 0xfa, 0x95, + 0xb8, 0x04, 0x32, 0xbd, 0x5e, 0xb4, 0x51, 0x75, 0xd2, 0x68, 0x89, 0x3e, 0xaa, 0x46, 0x5d, 0x26, + 0x8d, 0x16, 0x66, 0x25, 0xea, 0xb6, 0x65, 0x7f, 0xd7, 0xdb, 0x96, 0x75, 0x28, 0xd6, 0xbc, 0x76, + 0x8d, 0x88, 0x18, 0x50, 0x0b, 0xde, 0x4e, 0x76, 0xff, 0x83, 0x7b, 0x3b, 0xd9, 0xbf, 0x98, 0x33, + 0xa0, 0x8b, 0xbd, 0x2e, 0x83, 0x62, 0x84, 0x91, 0xd6, 0xc2, 0x62, 0x57, 0x71, 0x36, 0x7c, 0xb1, + 0xab, 0x9f, 0x38, 0x65, 0x86, 0x5a, 0x30, 0x58, 0xe1, 0x39, 0x64, 0x84, 0xce, 0xb2, 0x64, 0xe3, + 0x3a, 0x29, 0x23, 0xc8, 0xad, 0x29, 0xe2, 0x07, 0x96, 0x6c, 0xdc, 0x0b, 0x30, 0xa2, 0xbd, 0x17, + 0x42, 0x3f, 0x83, 0x4a, 0x5f, 0xa2, 0x7d, 0x86, 0x79, 0x2f, 0xf1, 0x30, 0x2b, 0x71, 0xbf, 0xd1, + 0x0f, 0xca, 0x96, 0xa6, 0x5f, 0x7e, 0xf4, 0x2a, 0x5a, 0xb2, 0x25, 0x23, 0x11, 0x40, 0x18, 0x60, + 0x51, 0x4a, 0xf5, 0xba, 0x26, 0x89, 0x6a, 0xea, 0x1c, 0x2d, 0xc4, 0xb5, 0xd2, 0xeb, 0x56, 0xf5, + 0x42, 0x6c, 0xe2, 0x52, 0xa5, 0xbc, 0x29, 0x82, 0x04, 0xb2, 0xa1, 0xdd, 0x32, 0x78, 0x00, 0x2b, + 0x0c, 0x96, 0xad, 0xa1, 0xa9, 0xc5, 0x14, 0x88, 0x50, 0x50, 0x1b, 0x0e, 0x25, 0x8d, 0x2a, 0x0f, + 0xd9, 0xd2, 0x21, 0xd8, 0xe0, 0x8a, 0x16, 0xe1, 0x64, 0x4c, 0x92, 0xb5, 0x1b, 0x01, 0x89, 0x54, + 0x9e, 0x04, 0x91, 0x0e, 0x44, 0x5d, 0x0d, 0x29, 0x67, 0x11, 0x70, 0x67, 0x9d, 0xdc, 0xe8, 0xd9, + 0xe2, 0x81, 0xa3, 0x67, 0xe7, 0x61, 0x62, 0xcb, 0xf3, 0x1b, 0xed, 0x88, 0x74, 0x8d, 0xc1, 0x5d, + 0xc8, 0x94, 0xe3, 0x8e, 0x1a, 0xec, 0x76, 0x52, 0xc3, 0xab, 0xc5, 0xa5, 0x41, 0xed, 0x76, 0x12, + 0x05, 0x60, 0x0e, 0x77, 0x7f, 0xdd, 0x01, 0x9e, 0x87, 0x69, 0x66, 0x6b, 0xcb, 0x0f, 0xfc, 0x64, + 0x17, 0x7d, 0xd5, 0x81, 0x89, 0x20, 0xac, 0x92, 0x99, 0x20, 0xf1, 0x25, 0xd0, 0x5e, 0x72, 0x7c, + 0xc6, 0xeb, 0x4a, 0x86, 0x3c, 0x4f, 0xea, 0x91, 0x85, 0xe2, 0x8e, 0x66, 0xb8, 0xe7, 0xe0, 0x4c, + 0x2e, 0x01, 0xf7, 0xfb, 0x7d, 0x60, 0xa6, 0x93, 0x42, 0xcf, 0x41, 0xb1, 0xc1, 0x12, 0x9c, 0x38, + 0x87, 0xcc, 0x13, 0xc6, 0xc6, 0x8a, 0x67, 0x40, 0xe1, 0x94, 0xd0, 0x3c, 0x8c, 0xb0, 0x1c, 0x55, + 0x22, 0xfd, 0x4c, 0xc1, 0xc8, 0xeb, 0x30, 0x82, 0xd3, 0xa2, 0xdb, 0xe6, 0x4f, 0xac, 0x57, 0x43, + 0xaf, 0xc1, 0xe0, 0x26, 0xcf, 0xd4, 0x69, 0xcf, 0xe7, 0x27, 0x52, 0x7f, 0x32, 0xdd, 0x48, 0xe6, + 0x01, 0xbd, 0x9d, 0xfe, 0x8b, 0x25, 0x47, 0xb4, 0x0b, 0x43, 0x9e, 0xfc, 0xa6, 0xfd, 0xb6, 0xae, + 0x8a, 0x18, 0xf3, 0x47, 0xc4, 0xec, 0xc8, 0x6f, 0xa8, 0xd8, 0x65, 0x82, 0x9b, 0x8a, 0x3d, 0x05, + 0x37, 0x7d, 0xcb, 0x01, 0x48, 0x9f, 0x35, 0x41, 0x37, 0x61, 0x28, 0x7e, 0xda, 0x30, 0x54, 0xd8, + 0x48, 0x33, 0x20, 0x28, 0x6a, 0x57, 0x71, 0x05, 0x04, 0x2b, 0x6e, 0x77, 0x32, 0xae, 0xfc, 0xc4, + 0x81, 0xd3, 0x79, 0xcf, 0xaf, 0xdc, 0xc3, 0x16, 0x1f, 0xd4, 0xae, 0x22, 0x2a, 0xac, 0x47, 0x64, + 0xcb, 0xbf, 0x99, 0x93, 0x2f, 0x9a, 0x17, 0xe0, 0x14, 0xc7, 0xfd, 0xe3, 0x41, 0x50, 0x8c, 0x8f, + 0xc8, 0x0e, 0xf3, 0x18, 0x3d, 0x33, 0xd5, 0x52, 0x9d, 0x4b, 0xe1, 0x61, 0x06, 0xc5, 0xa2, 0x94, + 0x9e, 0x9b, 0x64, 0x58, 0xbe, 0x10, 0xd9, 0x6c, 0x16, 0xca, 0xf0, 0x7d, 0xac, 0x4a, 0xf3, 0x2c, + 0x3b, 0xc5, 0x63, 0xb1, 0xec, 0x0c, 0xd8, 0xb7, 0xec, 0x34, 0x01, 0xc5, 0x7c, 0xa1, 0x30, 0x73, + 0x8a, 0x60, 0x34, 0x7a, 0x60, 0x43, 0x73, 0xb9, 0x83, 0x08, 0xce, 0x21, 0xcc, 0x62, 0x28, 0xc2, + 0x06, 0x99, 0xc1, 0x57, 0xc4, 0xe1, 0x23, 0x8d, 0xa1, 0xe0, 0x60, 0x2c, 0xcb, 0x0f, 0x69, 0x4a, + 0x41, 0xbf, 0xe9, 0xec, 0x63, 0xab, 0x1a, 0xb6, 0xb5, 0x05, 0xe5, 0xe6, 0xf2, 0x63, 0x27, 0xa9, + 0xc3, 0x18, 0xc0, 0xbe, 0xe6, 0xc0, 0x49, 0x12, 0x54, 0xa2, 0x5d, 0x46, 0x47, 0x50, 0x13, 0x2e, + 0xee, 0xab, 0x36, 0xd6, 0xfa, 0xa5, 0x2c, 0x71, 0xee, 0x49, 0xea, 0x00, 0xe3, 0xce, 0x66, 0xa0, + 0x35, 0x18, 0xaa, 0x78, 0x62, 0x5e, 0x8c, 0x1c, 0x64, 0x5e, 0x70, 0x47, 0xdd, 0x8c, 0x98, 0x0d, + 0x8a, 0x88, 0xfb, 0xa3, 0x02, 0x9c, 0xca, 0x69, 0x12, 0xbb, 0x31, 0xd6, 0xa4, 0x0b, 0x60, 0xa9, + 0x9a, 0x5d, 0xfe, 0xcb, 0x02, 0x8e, 0x15, 0x06, 0x5a, 0x87, 0xd3, 0xdb, 0xcd, 0x38, 0xa5, 0x32, + 0x17, 0x06, 0x09, 0xb9, 0x29, 0x85, 0x81, 0x74, 0x7f, 0x9f, 0x5e, 0xce, 0xc1, 0xc1, 0xb9, 0x35, + 0xa9, 0xb6, 0x44, 0x02, 0x6f, 0xb3, 0x41, 0xd2, 0x22, 0x71, 0x8f, 0x52, 0x69, 0x4b, 0x97, 0x32, + 0xe5, 0xb8, 0xa3, 0x06, 0xfa, 0x8c, 0x03, 0x0f, 0xc4, 0x24, 0xda, 0x21, 0x51, 0xd9, 0xaf, 0x92, + 0xb9, 0x76, 0x9c, 0x84, 0x4d, 0x12, 0x1d, 0xd2, 0x3a, 0x3b, 0x75, 0x6b, 0x6f, 0xea, 0x81, 0x72, + 0x77, 0x6a, 0x78, 0x3f, 0x56, 0xee, 0x67, 0x1c, 0x18, 0x2f, 0xb3, 0xb3, 0xbb, 0x52, 0xdd, 0x6d, + 0x67, 0x73, 0x7d, 0x4c, 0x25, 0x0f, 0xc9, 0x08, 0x61, 0x33, 0xdd, 0x87, 0xfb, 0x32, 0x4c, 0x94, + 0x49, 0xd3, 0x6b, 0xd5, 0xd9, 0x3d, 0x6a, 0x1e, 0xfe, 0x75, 0x01, 0x86, 0x63, 0x09, 0xcb, 0x3e, + 0xe0, 0xa4, 0x90, 0x71, 0x8a, 0x83, 0x1e, 0xe5, 0xa1, 0x6a, 0xf2, 0xca, 0xd3, 0x30, 0x3f, 0xe4, + 0xf0, 0xf8, 0xb6, 0x18, 0xcb, 0x32, 0xf7, 0x1f, 0x14, 0x60, 0x34, 0xad, 0x4f, 0xb6, 0x50, 0x0d, + 0x4e, 0x54, 0xb4, 0xeb, 0x82, 0xe9, 0x45, 0x8d, 0xde, 0x6f, 0x16, 0xf2, 0x24, 0xd3, 0x26, 0x11, + 0x9c, 0xa5, 0xfa, 0xff, 0x61, 0xa8, 0xe1, 0xe7, 0x0b, 0x70, 0x42, 0x8d, 0x95, 0x70, 0x94, 0xbe, + 0x91, 0x8d, 0x08, 0xc4, 0x36, 0xf2, 0x30, 0x99, 0x1f, 0x7f, 0x9f, 0xa8, 0xc0, 0x37, 0xb2, 0x51, + 0x81, 0x47, 0xca, 0xbe, 0xc3, 0xf7, 0xfb, 0xad, 0x02, 0x0c, 0xa9, 0xac, 0x50, 0xcf, 0x41, 0x91, + 0x1d, 0x9d, 0xef, 0xee, 0x00, 0xc0, 0x8e, 0xe1, 0x98, 0x53, 0xa2, 0x24, 0x59, 0xd4, 0xd1, 0xa1, + 0x73, 0x0f, 0x0f, 0x73, 0x03, 0xaa, 0x17, 0x25, 0x98, 0x53, 0x42, 0xcb, 0xd0, 0x47, 0x82, 0xaa, + 0x38, 0x09, 0x1c, 0x9c, 0x20, 0x7b, 0xeb, 0xed, 0x52, 0x50, 0xc5, 0x94, 0x0a, 0x4b, 0x4d, 0xc7, + 0x15, 0xbe, 0xcc, 0xcb, 0x3e, 0x42, 0xdb, 0x13, 0xa5, 0xee, 0x2c, 0x18, 0x69, 0x0b, 0x0f, 0x75, + 0x39, 0xe4, 0x17, 0xfb, 0x60, 0xa0, 0xdc, 0xde, 0xa4, 0xe7, 0xa2, 0x6f, 0x3a, 0x70, 0xea, 0x46, + 0x26, 0xb9, 0x77, 0xba, 0x50, 0xaf, 0xda, 0x33, 0x44, 0xeb, 0xd1, 0x73, 0xca, 0xfc, 0x96, 0x53, + 0x88, 0xf3, 0x9a, 0x63, 0xe4, 0xd7, 0xed, 0x3b, 0x92, 0xfc, 0xba, 0x37, 0x8f, 0xf8, 0x02, 0xcb, + 0x58, 0xb7, 0xcb, 0x2b, 0xee, 0xef, 0x14, 0x01, 0xf8, 0xd7, 0x58, 0x6b, 0x25, 0xbd, 0x98, 0x16, + 0x9f, 0x81, 0xd1, 0x1a, 0x09, 0x48, 0x24, 0x63, 0x23, 0x33, 0x0f, 0x4f, 0x2d, 0x6a, 0x65, 0xd8, + 0xc0, 0x64, 0x93, 0x25, 0x48, 0xa2, 0x5d, 0xae, 0xeb, 0x67, 0x2f, 0xa9, 0xa8, 0x12, 0xac, 0x61, + 0xa1, 0x69, 0xc3, 0xf3, 0xc3, 0x83, 0x08, 0xc6, 0xf7, 0x71, 0xd4, 0xbc, 0x1f, 0xc6, 0xcd, 0x64, + 0x34, 0x42, 0xe3, 0x54, 0x4e, 0x7f, 0x33, 0x87, 0x0d, 0xce, 0x60, 0xd3, 0x85, 0x50, 0x8d, 0x76, + 0x71, 0x3b, 0x10, 0xaa, 0xa7, 0x5a, 0x08, 0xf3, 0x0c, 0x8a, 0x45, 0x29, 0xcb, 0xe2, 0xc1, 0x36, + 0x61, 0x0e, 0x17, 0x99, 0x40, 0xd2, 0x2c, 0x1e, 0x5a, 0x19, 0x36, 0x30, 0x29, 0x07, 0x61, 0x9a, + 0x05, 0x73, 0xa9, 0x65, 0xec, 0xa9, 0x2d, 0x18, 0x0f, 0x4d, 0x93, 0x12, 0xd7, 0xc3, 0xde, 0xdd, + 0xe3, 0xd4, 0x33, 0xea, 0xf2, 0x60, 0x8d, 0x8c, 0x05, 0x2a, 0x43, 0x9f, 0xea, 0xde, 0xfa, 0x5d, + 0x8e, 0x51, 0x33, 0xb4, 0xb6, 0xeb, 0x75, 0x8b, 0x75, 0x38, 0xdd, 0x0a, 0xab, 0xeb, 0x91, 0x1f, + 0x46, 0x7e, 0xb2, 0x3b, 0xd7, 0xf0, 0xe2, 0x98, 0x4d, 0x8c, 0x31, 0x53, 0x27, 0x5b, 0xcf, 0xc1, + 0xc1, 0xb9, 0x35, 0xe9, 0xa1, 0xac, 0x25, 0x80, 0x2c, 0xc0, 0xad, 0xc8, 0xb5, 0x4a, 0x89, 0x88, + 0x55, 0xa9, 0x7b, 0x0a, 0x4e, 0x96, 0xdb, 0xad, 0x56, 0xc3, 0x27, 0x55, 0xe5, 0x59, 0x71, 0x3f, + 0x00, 0x27, 0x44, 0xf6, 0x5d, 0xa5, 0x01, 0x1d, 0x28, 0x57, 0xbc, 0xfb, 0x12, 0x8c, 0xea, 0xbb, + 0xa9, 0xed, 0x54, 0x9a, 0xee, 0x7f, 0xec, 0x83, 0x13, 0x99, 0x70, 0x25, 0xf4, 0x5a, 0x56, 0x2f, + 0xb2, 0xa3, 0x14, 0x68, 0x1a, 0x91, 0x48, 0x21, 0x9b, 0xa7, 0x63, 0xd5, 0xe5, 0x5d, 0x03, 0x6b, + 0xb7, 0x8c, 0x58, 0x44, 0x3e, 0xdf, 0xb5, 0x8c, 0x0b, 0x0b, 0x1f, 0x05, 0x50, 0x6c, 0x6d, 0x2a, + 0x3f, 0x7a, 0x3f, 0x99, 0x7c, 0x50, 0x90, 0x18, 0x6b, 0x1c, 0x51, 0x00, 0x83, 0xac, 0x21, 0x44, + 0x5e, 0x6d, 0xb5, 0xd6, 0x57, 0xa6, 0x96, 0xae, 0x72, 0xda, 0x58, 0x32, 0x71, 0x3f, 0x5d, 0x80, + 0xfc, 0x98, 0x38, 0xf4, 0xd1, 0xce, 0x0f, 0xfe, 0x9c, 0xc5, 0x81, 0x10, 0x41, 0x79, 0xdd, 0xbf, + 0x79, 0x60, 0x7e, 0xf3, 0x55, 0x4b, 0xe3, 0x20, 0xf8, 0x76, 0x7c, 0x79, 0xf7, 0x7f, 0x38, 0x30, + 0xb2, 0xb1, 0xb1, 0xa2, 0x54, 0x07, 0x0c, 0x67, 0x63, 0x9e, 0x35, 0x82, 0x85, 0x0e, 0xcc, 0x85, + 0xcd, 0x16, 0x8f, 0x24, 0x10, 0x11, 0x0e, 0x2c, 0xb1, 0x74, 0x39, 0x17, 0x03, 0x77, 0xa9, 0x89, + 0x96, 0xe0, 0x94, 0x5e, 0x52, 0xd6, 0xde, 0xf1, 0x2c, 0x8a, 0x24, 0x52, 0x9d, 0xc5, 0x38, 0xaf, + 0x4e, 0x96, 0x94, 0xb0, 0x98, 0xb3, 0xed, 0x3f, 0x87, 0x94, 0x28, 0xc6, 0x79, 0x75, 0xdc, 0x35, + 0x18, 0xd9, 0xf0, 0x22, 0xd5, 0xf1, 0x0f, 0xc2, 0x44, 0x25, 0x6c, 0x4a, 0x75, 0x68, 0x85, 0xec, + 0x90, 0x86, 0xe8, 0x32, 0x7f, 0x3c, 0x27, 0x53, 0x86, 0x3b, 0xb0, 0xdd, 0xff, 0x7a, 0x1e, 0x94, + 0x58, 0xe9, 0x41, 0x38, 0xb5, 0x54, 0xb4, 0x70, 0xd1, 0x72, 0xb4, 0xb0, 0xda, 0xbb, 0x32, 0x11, + 0xc3, 0x49, 0x1a, 0x31, 0x3c, 0x60, 0x3b, 0x62, 0x58, 0x29, 0xf1, 0x1d, 0x51, 0xc3, 0x5f, 0x76, + 0x60, 0x34, 0x08, 0xab, 0x44, 0xb9, 0x78, 0x07, 0xd9, 0x0a, 0x7f, 0xd1, 0xde, 0xe5, 0x0b, 0x1e, + 0xfd, 0x2a, 0xc8, 0xf3, 0x48, 0x76, 0xb5, 0xe5, 0xeb, 0x45, 0xd8, 0x68, 0x07, 0x5a, 0xd0, 0x6c, + 0xe7, 0xdc, 0x45, 0xf5, 0x60, 0xde, 0x19, 0xf4, 0x8e, 0x86, 0xf0, 0x9b, 0x9a, 0x1e, 0x3a, 0x6c, + 0xcb, 0x26, 0x2c, 0xaf, 0x36, 0x6a, 0x9e, 0x36, 0x99, 0x1b, 0x3d, 0xd5, 0x4f, 0x5d, 0x18, 0xe0, + 0x21, 0xef, 0x22, 0x5d, 0x19, 0x73, 0x00, 0xf3, 0x70, 0x78, 0x2c, 0x4a, 0x50, 0x22, 0xc3, 0x48, + 0x46, 0x6c, 0xbd, 0x74, 0x62, 0x84, 0xa9, 0xe4, 0xc7, 0x91, 0xa0, 0x67, 0x75, 0xdb, 0xc6, 0x68, + 0x2f, 0xb6, 0x8d, 0xb1, 0xae, 0x76, 0x8d, 0xcf, 0x39, 0x30, 0x5a, 0xd1, 0x5e, 0x1e, 0x29, 0x3d, + 0x6e, 0xeb, 0x85, 0xf5, 0xbc, 0x07, 0x62, 0xb8, 0x5f, 0xd1, 0x78, 0xe9, 0xc4, 0xe0, 0xce, 0x72, + 0xb4, 0x32, 0x43, 0x0e, 0x53, 0xa5, 0xac, 0xe4, 0x3e, 0x31, 0x0d, 0x43, 0x32, 0x1c, 0x97, 0xc2, + 0xb0, 0xe0, 0x85, 0x5e, 0x87, 0x21, 0x79, 0x6b, 0x42, 0xdc, 0x2e, 0xc0, 0x36, 0x1c, 0x3d, 0xa6, + 0x37, 0x59, 0x26, 0x76, 0xe4, 0x50, 0xac, 0x38, 0xa2, 0x3a, 0xf4, 0x55, 0xbd, 0x9a, 0xb8, 0x67, + 0xb0, 0x6a, 0x27, 0x71, 0xae, 0xe4, 0xc9, 0x8e, 0xbc, 0xf3, 0x33, 0x8b, 0x98, 0xb2, 0x40, 0x37, + 0xd3, 0xa7, 0x1b, 0x26, 0xac, 0xed, 0xbe, 0xa6, 0xda, 0xc9, 0x75, 0x82, 0x8e, 0x97, 0x20, 0xaa, + 0xc2, 0x01, 0xff, 0x17, 0x18, 0xdb, 0x05, 0x3b, 0x99, 0x77, 0x79, 0x2e, 0x9d, 0xd4, 0x89, 0x4f, + 0xb9, 0xd4, 0x93, 0xa4, 0x55, 0xfa, 0x59, 0x5b, 0x5c, 0x58, 0x46, 0x18, 0xfe, 0x18, 0xfe, 0xc6, + 0xc6, 0x3a, 0x66, 0xd4, 0x51, 0x03, 0x06, 0x5a, 0x2c, 0x36, 0xa8, 0xf4, 0x4e, 0x5b, 0x7b, 0x0b, + 0x8f, 0x35, 0xe2, 0x73, 0x93, 0xff, 0x8f, 0x05, 0x0f, 0x74, 0x09, 0x06, 0xf9, 0x0b, 0x44, 0xfc, + 0x9e, 0xc7, 0xc8, 0xc5, 0xc9, 0xee, 0xef, 0x18, 0xa5, 0x1b, 0x05, 0xff, 0x1d, 0x63, 0x59, 0x17, + 0x7d, 0xde, 0x81, 0x71, 0x2a, 0x51, 0xd3, 0x27, 0x93, 0x4a, 0xc8, 0x96, 0xcc, 0xba, 0x1a, 0x53, + 0x8d, 0x44, 0xca, 0x1a, 0x75, 0xec, 0x5c, 0x32, 0xd8, 0xe1, 0x0c, 0x7b, 0xf4, 0x06, 0x0c, 0xc5, + 0x7e, 0x95, 0x54, 0xbc, 0x28, 0x2e, 0x9d, 0x3a, 0x9a, 0xa6, 0xa4, 0x2e, 0x3f, 0xc1, 0x08, 0x2b, + 0x96, 0xe8, 0x57, 0xd8, 0x9b, 0xb5, 0x95, 0xba, 0xbf, 0x43, 0x56, 0xc2, 0x0a, 0x3f, 0x26, 0x9d, + 0xb6, 0xb5, 0xf6, 0xa5, 0x73, 0x53, 0x52, 0x16, 0x9e, 0x30, 0x93, 0x1d, 0xce, 0xf2, 0x47, 0x7f, + 0xcd, 0x81, 0x33, 0xfc, 0x6d, 0x89, 0xec, 0x73, 0x29, 0x67, 0x0e, 0x69, 0xf2, 0x62, 0x17, 0x54, + 0x66, 0xf2, 0x48, 0xe2, 0x7c, 0x4e, 0x2c, 0x13, 0xb4, 0xf9, 0xc2, 0xd5, 0x59, 0xab, 0xae, 0xef, + 0xde, 0x5f, 0xb5, 0x42, 0x4f, 0xc1, 0x48, 0x4b, 0x6c, 0x87, 0x7e, 0xdc, 0x64, 0xd7, 0x8d, 0xfa, + 0xf8, 0x45, 0xd0, 0xf5, 0x14, 0x8c, 0x75, 0x1c, 0x23, 0x2d, 0xf8, 0x13, 0xfb, 0xa5, 0x05, 0x47, + 0x57, 0x61, 0x24, 0x09, 0x1b, 0x22, 0x33, 0x6e, 0x5c, 0x2a, 0xb1, 0x19, 0x78, 0x3e, 0x6f, 0x6d, + 0x6d, 0x28, 0xb4, 0xd4, 0x32, 0x90, 0xc2, 0x62, 0xac, 0xd3, 0x61, 0x21, 0xde, 0xe2, 0xcd, 0x8e, + 0x88, 0x99, 0x04, 0xee, 0xcf, 0x84, 0x78, 0xeb, 0x85, 0xd8, 0xc4, 0x45, 0x8b, 0x70, 0xb2, 0xd5, + 0x61, 0x53, 0xe0, 0xd7, 0x1c, 0x55, 0x54, 0x4d, 0xa7, 0x41, 0xa1, 0xb3, 0x8e, 0x61, 0x4d, 0x78, + 0x60, 0x3f, 0x6b, 0x42, 0x97, 0x24, 0xd9, 0x0f, 0x1e, 0x26, 0x49, 0x36, 0xaa, 0xc2, 0x83, 0x5e, + 0x3b, 0x09, 0x59, 0xd6, 0x23, 0xb3, 0x0a, 0x8f, 0x76, 0x7f, 0x98, 0x07, 0xd0, 0xdf, 0xda, 0x9b, + 0x7a, 0x70, 0x66, 0x1f, 0x3c, 0xbc, 0x2f, 0x15, 0xf4, 0x2a, 0x0c, 0x11, 0x91, 0xe8, 0xbb, 0xf4, + 0x33, 0xb6, 0x94, 0x04, 0x33, 0x75, 0xb8, 0x0c, 0x24, 0xe6, 0x30, 0xac, 0xf8, 0xa1, 0x0d, 0x18, + 0xa9, 0x87, 0x71, 0x32, 0xd3, 0xf0, 0xbd, 0x98, 0xc4, 0xa5, 0x87, 0xd8, 0xa4, 0xc9, 0xd5, 0xbd, + 0x2e, 0x4b, 0xb4, 0x74, 0xce, 0x5c, 0x4e, 0x6b, 0x62, 0x9d, 0x0c, 0x22, 0xcc, 0x01, 0xce, 0x42, + 0xfd, 0xa5, 0x73, 0xef, 0x3c, 0xeb, 0xd8, 0x63, 0x79, 0x94, 0xd7, 0xc3, 0x6a, 0xd9, 0xc4, 0x56, + 0x1e, 0x70, 0x1d, 0x88, 0xb3, 0x34, 0xd1, 0x33, 0x30, 0xda, 0x0a, 0xab, 0xe5, 0x16, 0xa9, 0xac, + 0x7b, 0x49, 0xa5, 0x5e, 0x9a, 0x32, 0xad, 0x98, 0xeb, 0x5a, 0x19, 0x36, 0x30, 0x51, 0x0b, 0x06, + 0x9b, 0x3c, 0x1d, 0x46, 0xe9, 0x11, 0x5b, 0x67, 0x1b, 0x91, 0x5f, 0x43, 0xd8, 0x10, 0xf8, 0x0f, + 0x2c, 0xd9, 0xa0, 0xbf, 0xeb, 0xc0, 0x89, 0xcc, 0x05, 0xba, 0xd2, 0x3b, 0xac, 0xa9, 0x2c, 0x26, + 0xe1, 0xd9, 0xc7, 0xd8, 0xf0, 0x99, 0xc0, 0xdb, 0x9d, 0x20, 0x9c, 0x6d, 0x11, 0x1f, 0x17, 0x96, + 0xd3, 0xa6, 0xf4, 0xa8, 0xbd, 0x71, 0x61, 0x04, 0xe5, 0xb8, 0xb0, 0x1f, 0x58, 0xb2, 0x41, 0x4f, + 0xc0, 0xa0, 0x48, 0x3f, 0x59, 0x7a, 0xcc, 0x0c, 0x2b, 0x10, 0x59, 0x2a, 0xb1, 0x2c, 0x9f, 0xfc, + 0x00, 0x9c, 0xec, 0x38, 0xba, 0x1d, 0x28, 0xb1, 0xca, 0xaf, 0x39, 0xa0, 0xdf, 0xb8, 0xb7, 0xfe, + 0xba, 0xce, 0x33, 0x30, 0x5a, 0xe1, 0x8f, 0x9d, 0xf2, 0x3b, 0xfb, 0xfd, 0xa6, 0x3d, 0x79, 0x4e, + 0x2b, 0xc3, 0x06, 0xa6, 0x7b, 0x19, 0x50, 0xe7, 0xd3, 0x07, 0x87, 0x72, 0xcc, 0xfc, 0x7d, 0x07, + 0xc6, 0x0c, 0x9d, 0xc1, 0xba, 0xe3, 0x78, 0x01, 0x50, 0xd3, 0x8f, 0xa2, 0x30, 0xd2, 0x5f, 0x95, + 0x14, 0x79, 0x35, 0x58, 0x40, 0xc9, 0x6a, 0x47, 0x29, 0xce, 0xa9, 0xe1, 0xfe, 0xa3, 0x7e, 0x48, + 0x23, 0xe9, 0x55, 0x62, 0x68, 0xa7, 0x6b, 0x62, 0xe8, 0x27, 0x61, 0xe8, 0xe5, 0x38, 0x0c, 0xd6, + 0xd3, 0xf4, 0xd1, 0xea, 0x5b, 0x3c, 0x5b, 0x5e, 0xbb, 0xc2, 0x30, 0x15, 0x06, 0xc3, 0x7e, 0x65, + 0xc1, 0x6f, 0x24, 0x9d, 0xf9, 0x85, 0x9f, 0x7d, 0x8e, 0xc3, 0xb1, 0xc2, 0x60, 0x0f, 0x4c, 0xee, + 0x10, 0xe5, 0x68, 0x48, 0x1f, 0x98, 0xe4, 0xaf, 0x9a, 0xb0, 0x32, 0x74, 0x01, 0x86, 0x95, 0x93, + 0x42, 0x78, 0x3e, 0xd4, 0x48, 0x29, 0x4f, 0x06, 0x4e, 0x71, 0x98, 0x42, 0x28, 0x0c, 0xdb, 0xc2, + 0x84, 0x52, 0xb6, 0x71, 0x3c, 0xc9, 0x98, 0xca, 0xb9, 0x6c, 0x97, 0x60, 0xac, 0x58, 0xe6, 0x39, + 0xcf, 0x87, 0x8f, 0xc4, 0x79, 0xae, 0x5d, 0xeb, 0x28, 0xf6, 0x7a, 0xad, 0xc3, 0x9c, 0xdb, 0x43, + 0x3d, 0xcd, 0xed, 0x4f, 0xf6, 0xc1, 0xe0, 0x35, 0x12, 0xb1, 0xcc, 0xfc, 0x4f, 0xc0, 0xe0, 0x0e, + 0xff, 0x37, 0x7b, 0x27, 0x58, 0x60, 0x60, 0x59, 0x4e, 0xbf, 0xdb, 0x66, 0xdb, 0x6f, 0x54, 0xe7, + 0xd3, 0x55, 0x9c, 0x66, 0xce, 0x94, 0x05, 0x38, 0xc5, 0xa1, 0x15, 0x6a, 0x54, 0xb3, 0x6f, 0x36, + 0xfd, 0x24, 0x1b, 0x0b, 0xb7, 0x28, 0x0b, 0x70, 0x8a, 0x83, 0x1e, 0x83, 0x81, 0x9a, 0x9f, 0x6c, + 0x78, 0xb5, 0xac, 0xe7, 0x75, 0x91, 0x41, 0xb1, 0x28, 0x65, 0x6e, 0x37, 0x3f, 0xd9, 0x88, 0x08, + 0xb3, 0xec, 0x76, 0xa4, 0x24, 0x59, 0xd4, 0xca, 0xb0, 0x81, 0xc9, 0x9a, 0x14, 0x8a, 0x9e, 0x89, + 0x40, 0xe0, 0xb4, 0x49, 0xb2, 0x00, 0xa7, 0x38, 0x74, 0xfe, 0x57, 0xc2, 0x66, 0xcb, 0x6f, 0x88, + 0x10, 0x75, 0x6d, 0xfe, 0xcf, 0x09, 0x38, 0x56, 0x18, 0x14, 0x9b, 0x8a, 0x30, 0x2a, 0x7e, 0xb2, + 0x8f, 0xf9, 0xad, 0x0b, 0x38, 0x56, 0x18, 0xee, 0x35, 0x18, 0xe3, 0x2b, 0x79, 0xae, 0xe1, 0xf9, + 0xcd, 0xc5, 0x39, 0x74, 0xa9, 0xe3, 0x5a, 0xc7, 0x13, 0x39, 0xd7, 0x3a, 0xce, 0x18, 0x95, 0x3a, + 0xaf, 0x77, 0xb8, 0x3f, 0x28, 0xc0, 0xd0, 0x31, 0xbe, 0x87, 0x7a, 0xec, 0x4f, 0x7b, 0xa3, 0x9b, + 0x99, 0xb7, 0x50, 0xd7, 0x6d, 0xde, 0xd2, 0xda, 0xf7, 0x1d, 0xd4, 0xff, 0x54, 0x80, 0xb3, 0x12, + 0x55, 0x9e, 0xe5, 0x16, 0xe7, 0xd8, 0x1b, 0x73, 0x47, 0x3f, 0xd0, 0x91, 0x31, 0xd0, 0xeb, 0xf6, + 0x4e, 0xa3, 0x8b, 0x73, 0x5d, 0x87, 0xfa, 0xd5, 0xcc, 0x50, 0x63, 0xab, 0x5c, 0xf7, 0x1f, 0xec, + 0x3f, 0x75, 0x60, 0x32, 0x7f, 0xb0, 0x8f, 0xe1, 0xf9, 0xd9, 0x37, 0xcc, 0xe7, 0x67, 0x7f, 0xde, + 0xde, 0x14, 0x33, 0xbb, 0xd2, 0xe5, 0x21, 0xda, 0xff, 0xee, 0xc0, 0x69, 0x59, 0x81, 0xed, 0x9e, + 0xb3, 0x7e, 0xc0, 0x82, 0x83, 0x8e, 0x7e, 0x9a, 0xbd, 0x6e, 0x4c, 0xb3, 0x17, 0xec, 0x75, 0x5c, + 0xef, 0x47, 0xd7, 0x67, 0xfb, 0xff, 0xc4, 0x81, 0x52, 0x5e, 0x85, 0x63, 0xf8, 0xe4, 0xaf, 0x99, + 0x9f, 0xfc, 0xda, 0xd1, 0xf4, 0xbc, 0xfb, 0x07, 0x2f, 0x75, 0x1b, 0x28, 0xd4, 0x90, 0x7a, 0x95, + 0x63, 0xcb, 0x27, 0xcd, 0x59, 0xe4, 0x2b, 0x68, 0x0d, 0x18, 0x88, 0x59, 0x14, 0x8c, 0x98, 0x02, + 0x97, 0x6d, 0x68, 0x5b, 0x94, 0x9e, 0xb0, 0xb1, 0xb3, 0xff, 0xb1, 0xe0, 0xe1, 0xfe, 0x7a, 0x01, + 0xce, 0xa9, 0x67, 0xa5, 0xc9, 0x0e, 0x69, 0xa4, 0xeb, 0x83, 0x3d, 0x42, 0xe2, 0xa9, 0x9f, 0xf6, + 0x1e, 0x21, 0x49, 0x59, 0xa4, 0x6b, 0x21, 0x85, 0x61, 0x8d, 0x27, 0x2a, 0xc3, 0x19, 0xf6, 0x68, + 0xc8, 0x82, 0x1f, 0x78, 0x0d, 0xff, 0x55, 0x12, 0x61, 0xd2, 0x0c, 0x77, 0xbc, 0x86, 0xd0, 0xd4, + 0xd5, 0xb5, 0xf0, 0x85, 0x3c, 0x24, 0x9c, 0x5f, 0xb7, 0xe3, 0xc4, 0xdd, 0xd7, 0xeb, 0x89, 0xdb, + 0xfd, 0x23, 0x07, 0x46, 0x8f, 0xf1, 0x11, 0xee, 0xd0, 0x5c, 0x12, 0xcf, 0xda, 0x5b, 0x12, 0x5d, + 0x96, 0xc1, 0x5e, 0x11, 0x3a, 0xde, 0x25, 0x46, 0x9f, 0x72, 0x54, 0x9c, 0x10, 0x8f, 0xc7, 0x7c, + 0xc9, 0x5e, 0x3b, 0x0e, 0x92, 0xcd, 0x14, 0x7d, 0x2d, 0x93, 0xe2, 0xb5, 0x60, 0x2b, 0x4b, 0x58, + 0x47, 0x6b, 0x0e, 0x91, 0xea, 0xf5, 0xcb, 0x0e, 0x00, 0x6f, 0xa7, 0xc8, 0x10, 0x4f, 0xdb, 0xb6, + 0x79, 0x64, 0x23, 0x45, 0x99, 0xf0, 0xa6, 0xa9, 0x25, 0x94, 0x16, 0x60, 0xad, 0x25, 0x77, 0x91, + 0xc3, 0xf5, 0xae, 0xd3, 0xc7, 0x7e, 0xde, 0x81, 0x13, 0x99, 0xe6, 0xe6, 0xd4, 0xdf, 0x32, 0x9f, + 0xd1, 0xb4, 0xa0, 0x59, 0x99, 0x79, 0xc3, 0x75, 0xe3, 0xc9, 0x7f, 0x71, 0xc1, 0x78, 0xd0, 0x1d, + 0xbd, 0x06, 0xc3, 0xd2, 0xf2, 0x21, 0xa7, 0xb7, 0xcd, 0xe7, 0x84, 0xd5, 0xf1, 0x46, 0x42, 0x62, + 0x9c, 0xf2, 0xcb, 0x84, 0x21, 0x16, 0x7a, 0x0a, 0x43, 0xbc, 0xb7, 0x8f, 0x11, 0xe7, 0xdb, 0xa5, + 0xfb, 0x8f, 0xc4, 0x2e, 0xfd, 0xa0, 0x75, 0xbb, 0xf4, 0x43, 0xc7, 0x6c, 0x97, 0xd6, 0x9c, 0x84, + 0xc5, 0xbb, 0x70, 0x12, 0xbe, 0x06, 0xa7, 0x77, 0xd2, 0x43, 0xa7, 0x9a, 0x49, 0x22, 0x37, 0xd5, + 0x13, 0xb9, 0xd6, 0x68, 0x7a, 0x80, 0x8e, 0x13, 0x12, 0x24, 0xda, 0x71, 0x35, 0x8d, 0x80, 0xbc, + 0x96, 0x43, 0x0e, 0xe7, 0x32, 0xc9, 0x7a, 0x7b, 0x06, 0x7b, 0xf0, 0xf6, 0x7c, 0xdb, 0x81, 0x33, + 0x5e, 0xc7, 0x3d, 0x42, 0x4c, 0xb6, 0x44, 0xc8, 0xc9, 0x75, 0x7b, 0x2a, 0x84, 0x41, 0x5e, 0xb8, + 0xd5, 0xf2, 0x8a, 0x70, 0x7e, 0x83, 0xd0, 0xa3, 0xa9, 0xeb, 0x9d, 0xc7, 0xcd, 0xe6, 0xfb, 0xc9, + 0xbf, 0x96, 0x8d, 0xe7, 0x01, 0x36, 0xf4, 0x1f, 0xb1, 0x7b, 0xda, 0xb6, 0x10, 0xd3, 0x33, 0x72, + 0x17, 0x31, 0x3d, 0x19, 0xd7, 0xdb, 0xa8, 0x25, 0xd7, 0x5b, 0x00, 0x13, 0x7e, 0xd3, 0xab, 0x91, + 0xf5, 0x76, 0xa3, 0xc1, 0x2f, 0x06, 0xc9, 0x07, 0x9f, 0x73, 0x2d, 0x78, 0x2b, 0x61, 0xc5, 0x6b, + 0x64, 0x9f, 0xfa, 0x57, 0x17, 0xa0, 0x96, 0x32, 0x94, 0x70, 0x07, 0x6d, 0x3a, 0x61, 0x59, 0x92, + 0x44, 0x92, 0xd0, 0xd1, 0x66, 0x81, 0x23, 0x43, 0x7c, 0xc2, 0x5e, 0x4e, 0xc1, 0x58, 0xc7, 0x41, + 0xcb, 0x30, 0x5c, 0x0d, 0x62, 0x71, 0x25, 0xfa, 0x04, 0x13, 0x66, 0xef, 0xa2, 0x22, 0x70, 0xfe, + 0x4a, 0x59, 0x5d, 0x86, 0x7e, 0x30, 0x27, 0xeb, 0xa7, 0x2a, 0xc7, 0x69, 0x7d, 0xb4, 0xca, 0x88, + 0x89, 0xa7, 0xec, 0x78, 0x3c, 0xc7, 0xc3, 0x5d, 0x1c, 0x46, 0xf3, 0x57, 0xe4, 0x63, 0x7c, 0x63, + 0x82, 0x9d, 0x78, 0x93, 0x2e, 0xa5, 0xa0, 0x3d, 0xbc, 0x7d, 0x72, 0xdf, 0x87, 0xb7, 0x59, 0xba, + 0xdf, 0xa4, 0xa1, 0xdc, 0xc3, 0xe7, 0xad, 0xa5, 0xfb, 0x4d, 0x23, 0x25, 0x45, 0xba, 0xdf, 0x14, + 0x80, 0x75, 0x96, 0x68, 0xad, 0x9b, 0x9b, 0xfc, 0x14, 0x13, 0x1a, 0x07, 0x77, 0x7a, 0xeb, 0xfe, + 0xd2, 0xd3, 0xfb, 0xfa, 0x4b, 0x3b, 0xfc, 0xbb, 0x67, 0x0e, 0xe0, 0xdf, 0xad, 0xb3, 0x44, 0xac, + 0x8b, 0x73, 0xc2, 0xa5, 0x6e, 0xe1, 0x7c, 0xc7, 0x52, 0xbf, 0xf0, 0xc8, 0x53, 0xf6, 0x2f, 0xe6, + 0x0c, 0xba, 0x06, 0xa8, 0x9f, 0x3b, 0x74, 0x80, 0x3a, 0x15, 0xcf, 0x29, 0x9c, 0x65, 0xf4, 0x2d, + 0x0a, 0xf1, 0x9c, 0x82, 0xb1, 0x8e, 0x93, 0xf5, 0x96, 0xde, 0x7f, 0x64, 0xde, 0xd2, 0xc9, 0x63, + 0xf0, 0x96, 0x3e, 0xd0, 0xb3, 0xb7, 0xf4, 0x26, 0x9c, 0x6a, 0x85, 0xd5, 0x79, 0x3f, 0x8e, 0xda, + 0xec, 0xa6, 0xe4, 0x6c, 0xbb, 0x5a, 0x23, 0x09, 0x73, 0xb7, 0x8e, 0x5c, 0x7c, 0x97, 0xde, 0xc8, + 0x16, 0x5b, 0xc8, 0x72, 0x8d, 0x66, 0x2a, 0x30, 0xd3, 0x09, 0x8b, 0xba, 0xcd, 0x29, 0xc4, 0x79, + 0x2c, 0x74, 0x3f, 0xed, 0xc3, 0xc7, 0xe3, 0xa7, 0xfd, 0x20, 0x0c, 0xc5, 0xf5, 0x76, 0x52, 0x0d, + 0x6f, 0x04, 0xcc, 0x19, 0x3f, 0x3c, 0xfb, 0x0e, 0x65, 0xca, 0x16, 0xf0, 0xdb, 0x7b, 0x53, 0x13, + 0xf2, 0x7f, 0xcd, 0x8a, 0x2d, 0x20, 0xe8, 0xeb, 0x5d, 0xee, 0x43, 0xb9, 0x47, 0x79, 0x1f, 0xea, + 0xdc, 0x81, 0xee, 0x42, 0xe5, 0x39, 0xa3, 0x1f, 0xf9, 0xa9, 0x73, 0x46, 0x7f, 0xd5, 0x81, 0xb1, + 0x1d, 0xdd, 0x65, 0x20, 0x1c, 0xe6, 0x16, 0x02, 0x77, 0x0c, 0x4f, 0xc4, 0xac, 0x4b, 0xe5, 0x9c, + 0x01, 0xba, 0x9d, 0x05, 0x60, 0xb3, 0x25, 0x39, 0x41, 0x45, 0x8f, 0xde, 0xab, 0xa0, 0xa2, 0x37, + 0x98, 0x1c, 0x93, 0x87, 0x5c, 0xe6, 0x45, 0xb7, 0x1b, 0x53, 0x2c, 0x65, 0xa2, 0x0a, 0x29, 0xd6, + 0xf9, 0xa1, 0xcf, 0x39, 0x30, 0x21, 0xcf, 0x65, 0xc2, 0xe5, 0x17, 0x8b, 0xa8, 0x48, 0x9b, 0xc7, + 0x41, 0x16, 0x56, 0xbf, 0x91, 0xe1, 0x83, 0x3b, 0x38, 0x53, 0xa9, 0xae, 0x82, 0xd0, 0x6a, 0x31, + 0x0b, 0xfe, 0x15, 0x3a, 0xcc, 0x4c, 0x0a, 0xc6, 0x3a, 0x0e, 0xfa, 0x86, 0x03, 0xc5, 0x7a, 0x18, + 0x6e, 0xc7, 0xa5, 0x27, 0x98, 0x40, 0x7f, 0xde, 0xb2, 0x6e, 0x7a, 0x99, 0xd2, 0xe6, 0x4a, 0xe9, + 0x53, 0xd2, 0x76, 0xc4, 0x60, 0xb7, 0xf7, 0xa6, 0xc6, 0x8d, 0x17, 0xb3, 0xe2, 0xb7, 0xde, 0xd6, + 0x20, 0xc2, 0xb6, 0xc9, 0x9a, 0x86, 0xbe, 0xe8, 0xc0, 0xc4, 0x8d, 0x8c, 0x41, 0x43, 0x84, 0x85, + 0x62, 0xfb, 0xa6, 0x12, 0x3e, 0xdc, 0x59, 0x28, 0xee, 0x68, 0x01, 0xfa, 0xac, 0x69, 0xe8, 0xe4, + 0xf1, 0xa3, 0x16, 0x07, 0x30, 0x63, 0x58, 0xe5, 0xd7, 0x82, 0xf2, 0x2d, 0x9e, 0x77, 0x1d, 0x1f, + 0x32, 0x49, 0x3b, 0x93, 0x7e, 0xac, 0x9c, 0xaa, 0xc4, 0xb4, 0xb7, 0x58, 0x58, 0xec, 0xc6, 0xe7, + 0xd7, 0xcd, 0x2d, 0x5f, 0x3c, 0x0b, 0xe3, 0xa6, 0x6f, 0x0f, 0xbd, 0xdb, 0x7c, 0x8b, 0xe4, 0x7c, + 0xf6, 0x59, 0x87, 0x31, 0x89, 0x6f, 0x3c, 0xed, 0x60, 0xbc, 0xbd, 0x50, 0x38, 0xd2, 0xb7, 0x17, + 0xfa, 0x8e, 0xe7, 0xed, 0x85, 0x89, 0xa3, 0x78, 0x7b, 0xe1, 0xe4, 0x81, 0xde, 0x5e, 0xd0, 0xde, + 0xbe, 0xe8, 0xbf, 0xc3, 0xdb, 0x17, 0x33, 0x70, 0x42, 0xde, 0xfd, 0x21, 0x22, 0xbd, 0x3d, 0x77, + 0xfb, 0xab, 0x87, 0xdc, 0xe7, 0xcc, 0x62, 0x9c, 0xc5, 0xa7, 0x8b, 0xac, 0x18, 0xb0, 0x9a, 0x03, + 0xb6, 0x9e, 0xe6, 0x32, 0xa7, 0x16, 0x3b, 0x3e, 0x0b, 0x11, 0x25, 0xa3, 0x9d, 0x8b, 0x0c, 0x76, + 0x5b, 0xfe, 0x83, 0x79, 0x0b, 0xd0, 0x8b, 0x50, 0x0a, 0xb7, 0xb6, 0x1a, 0xa1, 0x57, 0x4d, 0x1f, + 0x88, 0x90, 0x71, 0x09, 0xfc, 0x2e, 0xac, 0xca, 0x27, 0xbc, 0xd6, 0x05, 0x0f, 0x77, 0xa5, 0x80, + 0xbe, 0x4d, 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, 0x67, 0x5b, + 0x79, 0xa6, 0xa2, 0x58, 0xdc, 0x58, 0xda, 0xcf, 0x60, 0xa5, 0x9e, 0x2b, 0xcf, 0x35, 0x36, 0xc5, + 0xb8, 0x0b, 0x65, 0xfd, 0x11, 0x87, 0xa1, 0xe3, 0x79, 0xc4, 0xe1, 0x4d, 0x80, 0x8a, 0x4c, 0x27, + 0x27, 0x8d, 0x0f, 0xcb, 0x56, 0xae, 0xd2, 0x70, 0x9a, 0xda, 0xcb, 0xbd, 0x8a, 0x0d, 0xd6, 0x58, + 0xa2, 0xff, 0x9d, 0xfb, 0xca, 0x09, 0xb7, 0xb0, 0xd4, 0xac, 0xcf, 0x89, 0x9f, 0xba, 0x97, 0x4e, + 0xfe, 0x9e, 0x03, 0x93, 0x7c, 0xe6, 0x65, 0x95, 0x7b, 0xaa, 0x5a, 0x88, 0xbb, 0x3d, 0xb6, 0x43, + 0x57, 0x78, 0x5a, 0x28, 0x83, 0x2b, 0x73, 0x74, 0xef, 0xd3, 0x12, 0xf4, 0xe5, 0x9c, 0x23, 0xc5, + 0x09, 0x5b, 0x36, 0xcb, 0xfc, 0xb7, 0x2a, 0x4e, 0xdd, 0xea, 0xe5, 0x14, 0xf1, 0x0f, 0xbb, 0x9a, + 0x54, 0x11, 0x6b, 0xde, 0x2f, 0x1c, 0x91, 0x49, 0x55, 0x7f, 0x50, 0xe3, 0x40, 0x86, 0xd5, 0xcf, + 0x3b, 0x30, 0xe1, 0x65, 0x42, 0x4d, 0x98, 0x1d, 0xc8, 0x8a, 0x4d, 0x6a, 0x26, 0x4a, 0xe3, 0x57, + 0x98, 0x92, 0x97, 0x8d, 0x6a, 0xc1, 0x1d, 0xcc, 0xd1, 0x0f, 0x1c, 0x78, 0x20, 0xf1, 0xe2, 0x6d, + 0x9e, 0xae, 0x3a, 0x4e, 0xef, 0xea, 0x8a, 0xc6, 0x9d, 0x66, 0xab, 0xf1, 0x15, 0xeb, 0xab, 0x71, + 0xa3, 0x3b, 0x4f, 0xbe, 0x2e, 0x1f, 0x11, 0xeb, 0xf2, 0x81, 0x7d, 0x30, 0xf1, 0x7e, 0x4d, 0x9f, + 0xfc, 0x94, 0xc3, 0x9f, 0x35, 0xeb, 0xaa, 0xf2, 0x6d, 0x9a, 0x2a, 0xdf, 0x8a, 0xcd, 0x87, 0x95, + 0x74, 0xdd, 0xf3, 0x97, 0x1d, 0x38, 0x9d, 0xb7, 0x23, 0xe5, 0x34, 0xe9, 0x23, 0x66, 0x93, 0x2c, + 0x9e, 0xb2, 0xf4, 0x06, 0x59, 0x79, 0xd7, 0x65, 0xf2, 0x0a, 0x3c, 0x7c, 0xa7, 0xaf, 0x78, 0x27, + 0x7a, 0x43, 0xba, 0x5a, 0xfc, 0x27, 0xc3, 0x9a, 0x17, 0x32, 0x21, 0x2d, 0xeb, 0x31, 0xdc, 0x01, + 0x0c, 0xf8, 0x41, 0xc3, 0x0f, 0x88, 0xb8, 0xaf, 0x69, 0xf3, 0x0c, 0x2b, 0xde, 0x65, 0xa2, 0xd4, + 0xb1, 0xe0, 0x72, 0x8f, 0x9d, 0x92, 0xd9, 0x97, 0xee, 0xfa, 0x8f, 0xff, 0xa5, 0xbb, 0x1b, 0x30, + 0x7c, 0xc3, 0x4f, 0xea, 0x2c, 0x98, 0x42, 0xf8, 0xfa, 0x2c, 0xdc, 0x73, 0xa4, 0xe4, 0xd2, 0xbe, + 0x5f, 0x97, 0x0c, 0x70, 0xca, 0x0b, 0x5d, 0xe0, 0x8c, 0x59, 0xe4, 0x76, 0x36, 0xa4, 0xf6, 0xba, + 0x2c, 0xc0, 0x29, 0x0e, 0x1d, 0xac, 0x51, 0xfa, 0x4b, 0xe6, 0x98, 0x12, 0xa9, 0x9f, 0x6d, 0xa4, + 0xf4, 0x14, 0x14, 0xf9, 0x6d, 0xe2, 0xeb, 0x1a, 0x0f, 0x6c, 0x70, 0x54, 0xd9, 0xb7, 0x87, 0xba, + 0x66, 0xdf, 0x7e, 0x9d, 0x29, 0x6c, 0x89, 0x1f, 0xb4, 0xc9, 0x5a, 0x20, 0xe2, 0xbd, 0x57, 0xec, + 0xdc, 0x7d, 0xe6, 0x34, 0xf9, 0x11, 0x3c, 0xfd, 0x8d, 0x35, 0x7e, 0x9a, 0xcb, 0x65, 0x64, 0x5f, + 0x97, 0x4b, 0x6a, 0x72, 0x19, 0xb5, 0x6e, 0x72, 0x49, 0x48, 0xcb, 0x8a, 0xc9, 0xe5, 0xa7, 0xca, + 0x1c, 0xf0, 0xa7, 0x0e, 0x20, 0xa5, 0x77, 0x29, 0x81, 0x7a, 0x0c, 0x41, 0x95, 0x1f, 0x73, 0x00, + 0x02, 0xf5, 0x1e, 0xaa, 0xdd, 0x5d, 0x90, 0xd3, 0x4c, 0x1b, 0x90, 0xc2, 0xb0, 0xc6, 0xd3, 0xfd, + 0x63, 0x27, 0x8d, 0x5d, 0x4e, 0xfb, 0x7e, 0x0c, 0x41, 0x64, 0xbb, 0x66, 0x10, 0xd9, 0x86, 0x45, + 0xd3, 0xbd, 0xea, 0x46, 0x97, 0x70, 0xb2, 0x1f, 0x17, 0xe0, 0x84, 0x8e, 0x5c, 0x26, 0xc7, 0xf1, + 0xb1, 0x6f, 0x18, 0x11, 0xb4, 0x57, 0xed, 0xf6, 0xb7, 0x2c, 0x3c, 0x40, 0x79, 0xd1, 0xda, 0x6f, + 0x66, 0xa2, 0xb5, 0xaf, 0xdb, 0x67, 0xbd, 0x7f, 0xc8, 0xf6, 0x7f, 0x76, 0xe0, 0x54, 0xa6, 0xc6, + 0x31, 0x4c, 0xb0, 0x1d, 0x73, 0x82, 0x3d, 0x67, 0xbd, 0xd7, 0x5d, 0x66, 0xd7, 0x37, 0x0b, 0x1d, + 0xbd, 0x65, 0x87, 0xb8, 0x4f, 0x3a, 0x50, 0xa4, 0xda, 0xb2, 0x8c, 0xe7, 0xfa, 0xc8, 0x91, 0xcc, + 0x00, 0xa6, 0xd7, 0x0b, 0xe9, 0xac, 0xda, 0xc7, 0x60, 0x98, 0x73, 0x9f, 0xfc, 0x84, 0x03, 0x90, + 0x22, 0xdd, 0x2b, 0x15, 0xd8, 0xfd, 0x4e, 0x01, 0xce, 0xe4, 0x4e, 0x23, 0xf4, 0x69, 0x65, 0x91, + 0x73, 0x6c, 0x47, 0x2b, 0x1a, 0x8c, 0x74, 0xc3, 0xdc, 0x98, 0x61, 0x98, 0x13, 0xf6, 0xb8, 0x7b, + 0x75, 0x80, 0x11, 0x62, 0x5a, 0x1b, 0xac, 0x1f, 0x39, 0x69, 0x00, 0xac, 0xca, 0x6b, 0xf4, 0x67, + 0xf0, 0x12, 0x8f, 0xfb, 0x63, 0xed, 0x86, 0x83, 0xec, 0xe8, 0x31, 0xc8, 0x8a, 0x1b, 0xa6, 0xac, + 0xc0, 0xf6, 0xfd, 0xc8, 0x5d, 0x84, 0xc5, 0x2b, 0x90, 0xe7, 0x58, 0xee, 0x2d, 0xc9, 0xa4, 0x71, + 0x1d, 0xb6, 0xd0, 0xf3, 0x75, 0xd8, 0x31, 0x18, 0x79, 0xc1, 0x57, 0x09, 0x4a, 0x67, 0xa7, 0xbf, + 0xfb, 0xc3, 0xf3, 0xf7, 0x7d, 0xef, 0x87, 0xe7, 0xef, 0xfb, 0xc1, 0x0f, 0xcf, 0xdf, 0xf7, 0xb1, + 0x5b, 0xe7, 0x9d, 0xef, 0xde, 0x3a, 0xef, 0x7c, 0xef, 0xd6, 0x79, 0xe7, 0x07, 0xb7, 0xce, 0x3b, + 0xff, 0xf6, 0xd6, 0x79, 0xe7, 0x6f, 0xfc, 0xbb, 0xf3, 0xf7, 0xbd, 0x30, 0x24, 0x3b, 0xf6, 0xff, + 0x02, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x63, 0x43, 0x02, 0x38, 0xda, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -9201,6 +9232,20 @@ func (m *Mutex) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Selectors) > 0 { + for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } i -= len(m.Namespace) copy(dAtA[i:], m.Namespace) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) @@ -10963,6 +11008,20 @@ func (m *SemaphoreRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Selectors) > 0 { + for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } i -= len(m.Namespace) copy(dAtA[i:], m.Namespace) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) @@ -11332,6 +11391,39 @@ func (m *SuspendTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SyncSelector) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SyncSelector) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SyncSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Template) + copy(dAtA[i:], m.Template) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Template))) + i-- + dAtA[i] = 0x12 + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *Synchronization) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -15663,6 +15755,12 @@ func (m *Mutex) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.Namespace) n += 1 + l + sovGenerated(uint64(l)) + if len(m.Selectors) > 0 { + for _, e := range m.Selectors { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -16321,6 +16419,12 @@ func (m *SemaphoreRef) Size() (n int) { } l = len(m.Namespace) n += 1 + l + sovGenerated(uint64(l)) + if len(m.Selectors) > 0 { + for _, e := range m.Selectors { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -16454,6 +16558,19 @@ func (m *SuspendTemplate) Size() (n int) { return n } +func (m *SyncSelector) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Template) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *Synchronization) Size() (n int) { if m == nil { return 0 @@ -18530,9 +18647,15 @@ func (this *Mutex) String() string { if this == nil { return "nil" } + repeatedStringForSelectors := "[]SyncSelector{" + for _, f := range this.Selectors { + repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "SyncSelector", "SyncSelector", 1), `&`, ``, 1) + "," + } + repeatedStringForSelectors += "}" s := strings.Join([]string{`&Mutex{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Selectors:` + repeatedStringForSelectors + `,`, `}`, }, "") return s @@ -18986,9 +19109,15 @@ func (this *SemaphoreRef) String() string { if this == nil { return "nil" } + repeatedStringForSelectors := "[]SyncSelector{" + for _, f := range this.Selectors { + repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "SyncSelector", "SyncSelector", 1), `&`, ``, 1) + "," + } + repeatedStringForSelectors += "}" s := strings.Join([]string{`&SemaphoreRef{`, `ConfigMapKeyRef:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMapKeyRef), "ConfigMapKeySelector", "v1.ConfigMapKeySelector", 1) + `,`, `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Selectors:` + repeatedStringForSelectors + `,`, `}`, }, "") return s @@ -19089,6 +19218,17 @@ func (this *SuspendTemplate) String() string { }, "") return s } +func (this *SyncSelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SyncSelector{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Template:` + fmt.Sprintf("%v", this.Template) + `,`, + `}`, + }, "") + return s +} func (this *Synchronization) String() string { if this == nil { return "nil" @@ -32382,6 +32522,40 @@ func (m *Mutex) Unmarshal(dAtA []byte) error { } m.Namespace = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Selectors = append(m.Selectors, SyncSelector{}) + if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -38007,6 +38181,40 @@ func (m *SemaphoreRef) Unmarshal(dAtA []byte) error { } m.Namespace = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Selectors = append(m.Selectors, SyncSelector{}) + if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -39104,6 +39312,120 @@ func (m *SuspendTemplate) Unmarshal(dAtA []byte) error { } return nil } +func (m *SyncSelector) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SyncSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SyncSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Template = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Synchronization) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index 5ae06f70e020..de61ad86ea47 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -976,6 +976,9 @@ message Mutex { // Namespace is the namespace of the mutex, default: [namespace of workflow] optional string namespace = 2; + + // Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable + repeated SyncSelector selectors = 3; } // MutexHolding describes the mutex and the object which is holding it. @@ -1468,6 +1471,9 @@ message SemaphoreRef { // Namespace is the namespace of the configmap, default: [namespace of workflow] optional string namespace = 2; + + // Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable + repeated SyncSelector selectors = 3; } message SemaphoreStatus { @@ -1562,6 +1568,15 @@ message SuspendTemplate { optional string duration = 1; } +// Synchronization selector +message SyncSelector { + // Name of the selector + optional string name = 1; + + // Template replaced with global variables + optional string template = 2; +} + // Synchronization holds synchronization lock configuration message Synchronization { // Semaphore holds the Semaphore configuration - deprecated, use semaphores instead diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index a89ff0719d32..ddc9c623f9b0 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -132,6 +132,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SubmitOpts": schema_pkg_apis_workflow_v1alpha1_SubmitOpts(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SuppliedValueFrom": schema_pkg_apis_workflow_v1alpha1_SuppliedValueFrom(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SuspendTemplate": schema_pkg_apis_workflow_v1alpha1_SuspendTemplate(ref), + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SyncSelector": schema_pkg_apis_workflow_v1alpha1_SyncSelector(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Synchronization": schema_pkg_apis_workflow_v1alpha1_Synchronization(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SynchronizationStatus": schema_pkg_apis_workflow_v1alpha1_SynchronizationStatus(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.TTLStrategy": schema_pkg_apis_workflow_v1alpha1_TTLStrategy(ref), @@ -3994,9 +3995,25 @@ func schema_pkg_apis_workflow_v1alpha1_Mutex(ref common.ReferenceCallback) commo Format: "", }, }, + "selectors": { + SchemaProps: spec.SchemaProps{ + Description: "Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SyncSelector"), + }, + }, + }, + }, + }, }, }, }, + Dependencies: []string{ + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SyncSelector"}, } } @@ -5885,11 +5902,25 @@ func schema_pkg_apis_workflow_v1alpha1_SemaphoreRef(ref common.ReferenceCallback Format: "", }, }, + "selectors": { + SchemaProps: spec.SchemaProps{ + Description: "Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SyncSelector"), + }, + }, + }, + }, + }, }, }, }, Dependencies: []string{ - "k8s.io/api/core/v1.ConfigMapKeySelector"}, + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.SyncSelector", "k8s.io/api/core/v1.ConfigMapKeySelector"}, } } @@ -6169,6 +6200,33 @@ func schema_pkg_apis_workflow_v1alpha1_SuspendTemplate(ref common.ReferenceCallb } } +func schema_pkg_apis_workflow_v1alpha1_SyncSelector(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "Synchronization selector", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "name": { + SchemaProps: spec.SchemaProps{ + Description: "Name of the selector", + Type: []string{"string"}, + Format: "", + }, + }, + "template": { + SchemaProps: spec.SchemaProps{ + Description: "Template replaced with global variables", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, + } +} + func schema_pkg_apis_workflow_v1alpha1_Synchronization(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index c90ebd76dd38..7229f5c5c1b0 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -1665,12 +1665,23 @@ func (s *Synchronization) getSemaphoreConfigMapRef() *apiv1.ConfigMapKeySelector return nil } +// Synchronization selector +type SyncSelector struct { + // Name of the selector + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // Template replaced with global variables + Template string `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"` +} + // SemaphoreRef is a reference of Semaphore type SemaphoreRef struct { // ConfigMapKeyRef is configmap selector for Semaphore configuration ConfigMapKeyRef *apiv1.ConfigMapKeySelector `json:"configMapKeyRef,omitempty" protobuf:"bytes,1,opt,name=configMapKeyRef"` // Namespace is the namespace of the configmap, default: [namespace of workflow] Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"` + // Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable + Selectors []SyncSelector `json:"selectors,omitempty" protobuf:"bytes,3,opt,name=selectors"` } // Mutex holds Mutex configuration @@ -1679,6 +1690,8 @@ type Mutex struct { Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` // Namespace is the namespace of the mutex, default: [namespace of workflow] Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"` + // Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable + Selectors []SyncSelector `json:"selectors,omitempty" protobuf:"bytes,3,opt,name=selectors"` } // WorkflowTemplateRef is a reference to a WorkflowTemplate resource. diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index 7592ca05ced8..9c9e687e493a 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -2023,6 +2023,11 @@ func (in *Metrics) DeepCopy() *Metrics { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Mutex) DeepCopyInto(out *Mutex) { *out = *in + if in.Selectors != nil { + in, out := &in.Selectors, &out.Selectors + *out = make([]SyncSelector, len(*in)) + copy(*out, *in) + } return } @@ -2866,6 +2871,11 @@ func (in *SemaphoreRef) DeepCopyInto(out *SemaphoreRef) { *out = new(v1.ConfigMapKeySelector) (*in).DeepCopyInto(*out) } + if in.Selectors != nil { + in, out := &in.Selectors, &out.Selectors + *out = make([]SyncSelector, len(*in)) + copy(*out, *in) + } return } @@ -3042,6 +3052,22 @@ func (in *SuspendTemplate) DeepCopy() *SuspendTemplate { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SyncSelector) DeepCopyInto(out *SyncSelector) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncSelector. +func (in *SyncSelector) DeepCopy() *SyncSelector { + if in == nil { + return nil + } + out := new(SyncSelector) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Synchronization) DeepCopyInto(out *Synchronization) { *out = *in @@ -3053,7 +3079,7 @@ func (in *Synchronization) DeepCopyInto(out *Synchronization) { if in.Mutex != nil { in, out := &in.Mutex, &out.Mutex *out = new(Mutex) - **out = **in + (*in).DeepCopyInto(*out) } if in.Semaphores != nil { in, out := &in.Semaphores, &out.Semaphores @@ -3073,7 +3099,7 @@ func (in *Synchronization) DeepCopyInto(out *Synchronization) { if (*in)[i] != nil { in, out := &(*in)[i], &(*out)[i] *out = new(Mutex) - **out = **in + (*in).DeepCopyInto(*out) } } } diff --git a/pkg/plugins/executor/swagger.yml b/pkg/plugins/executor/swagger.yml index 6830ec022f9f..5d9226a62da0 100644 --- a/pkg/plugins/executor/swagger.yml +++ b/pkg/plugins/executor/swagger.yml @@ -2269,6 +2269,11 @@ definitions: namespace: default: '[namespace of workflow]' type: string + selectors: + description: Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable + items: + $ref: '#/definitions/SyncSelector' + type: array type: object NFSVolumeSource: description: NFS volumes do not support ownership management or SELinux relabeling. @@ -4116,6 +4121,11 @@ definitions: namespace: default: '[namespace of workflow]' type: string + selectors: + description: Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable + items: + $ref: '#/definitions/SyncSelector' + type: array type: object Sequence: description: Sequence expands a workflow step into numeric range @@ -4219,6 +4229,16 @@ definitions: Could also be a Duration, e.g.: "2m", "6h" type: string type: object + SyncSelector: + description: Synchronization selector + properties: + name: + description: Name of the selector + type: string + template: + description: Template replaced with global variables + type: string + type: object Synchronization: description: Synchronization holds synchronization lock configuration properties: diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md index 7e694dee1511..39c35604c865 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **name** | **String** | name of the mutex | [optional] **namespace** | **String** | Namespace is the namespace of the mutex, default: [namespace of workflow] | [optional] +**selectors** | [**List<IoArgoprojWorkflowV1alpha1SyncSelector>**](IoArgoprojWorkflowV1alpha1SyncSelector.md) | Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable | [optional] diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1SemaphoreRef.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1SemaphoreRef.md index 03178d50b424..aa05578a7580 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1SemaphoreRef.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1SemaphoreRef.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **configMapKeyRef** | [**io.kubernetes.client.openapi.models.V1ConfigMapKeySelector**](io.kubernetes.client.openapi.models.V1ConfigMapKeySelector.md) | | [optional] **namespace** | **String** | Namespace is the namespace of the configmap, default: [namespace of workflow] | [optional] +**selectors** | [**List<IoArgoprojWorkflowV1alpha1SyncSelector>**](IoArgoprojWorkflowV1alpha1SyncSelector.md) | Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable | [optional] diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1SyncSelector.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1SyncSelector.md new file mode 100644 index 000000000000..81d05cbfbbf0 --- /dev/null +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1SyncSelector.md @@ -0,0 +1,15 @@ + + +# IoArgoprojWorkflowV1alpha1SyncSelector + +Synchronization selector + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | Name of the selector | [optional] +**template** | **String** | Template replaced with global variables | [optional] + + + diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_mutex.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_mutex.py index 0a15d05c6ba2..bdd9dceb86c2 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_mutex.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_mutex.py @@ -29,6 +29,10 @@ from argo_workflows.exceptions import ApiAttributeError +def lazy_import(): + from argo_workflows.model.io_argoproj_workflow_v1alpha1_sync_selector import IoArgoprojWorkflowV1alpha1SyncSelector + globals()['IoArgoprojWorkflowV1alpha1SyncSelector'] = IoArgoprojWorkflowV1alpha1SyncSelector + class IoArgoprojWorkflowV1alpha1Mutex(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -66,6 +70,7 @@ def additional_properties_type(): This must be a method because a model may have properties that are of type self, this must run after the class is loaded """ + lazy_import() return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False @@ -80,9 +85,11 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { 'name': (str,), # noqa: E501 'namespace': (str,), # noqa: E501 + 'selectors': ([IoArgoprojWorkflowV1alpha1SyncSelector],), # noqa: E501 } @cached_property @@ -93,6 +100,7 @@ def discriminator(): attribute_map = { 'name': 'name', # noqa: E501 'namespace': 'namespace', # noqa: E501 + 'selectors': 'selectors', # noqa: E501 } read_only_vars = { @@ -138,6 +146,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) name (str): name of the mutex. [optional] # noqa: E501 namespace (str): Namespace is the namespace of the mutex, default: [namespace of workflow]. [optional] # noqa: E501 + selectors ([IoArgoprojWorkflowV1alpha1SyncSelector]): Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -221,6 +230,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) name (str): name of the mutex. [optional] # noqa: E501 namespace (str): Namespace is the namespace of the mutex, default: [namespace of workflow]. [optional] # noqa: E501 + selectors ([IoArgoprojWorkflowV1alpha1SyncSelector]): Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_semaphore_ref.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_semaphore_ref.py index 0d382bc48a74..75b5a280f971 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_semaphore_ref.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_semaphore_ref.py @@ -31,7 +31,9 @@ def lazy_import(): from argo_workflows.model.config_map_key_selector import ConfigMapKeySelector + from argo_workflows.model.io_argoproj_workflow_v1alpha1_sync_selector import IoArgoprojWorkflowV1alpha1SyncSelector globals()['ConfigMapKeySelector'] = ConfigMapKeySelector + globals()['IoArgoprojWorkflowV1alpha1SyncSelector'] = IoArgoprojWorkflowV1alpha1SyncSelector class IoArgoprojWorkflowV1alpha1SemaphoreRef(ModelNormal): @@ -89,6 +91,7 @@ def openapi_types(): return { 'config_map_key_ref': (ConfigMapKeySelector,), # noqa: E501 'namespace': (str,), # noqa: E501 + 'selectors': ([IoArgoprojWorkflowV1alpha1SyncSelector],), # noqa: E501 } @cached_property @@ -99,6 +102,7 @@ def discriminator(): attribute_map = { 'config_map_key_ref': 'configMapKeyRef', # noqa: E501 'namespace': 'namespace', # noqa: E501 + 'selectors': 'selectors', # noqa: E501 } read_only_vars = { @@ -144,6 +148,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) config_map_key_ref (ConfigMapKeySelector): [optional] # noqa: E501 namespace (str): Namespace is the namespace of the configmap, default: [namespace of workflow]. [optional] # noqa: E501 + selectors ([IoArgoprojWorkflowV1alpha1SyncSelector]): Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -227,6 +232,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) config_map_key_ref (ConfigMapKeySelector): [optional] # noqa: E501 namespace (str): Namespace is the namespace of the configmap, default: [namespace of workflow]. [optional] # noqa: E501 + selectors ([IoArgoprojWorkflowV1alpha1SyncSelector]): Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_sync_selector.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_sync_selector.py new file mode 100644 index 000000000000..d4dbf8f407ce --- /dev/null +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_sync_selector.py @@ -0,0 +1,259 @@ +""" + Argo Workflows API + + Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. For more information, please see https://argo-workflows.readthedocs.io/en/latest/ # noqa: E501 + + The version of the OpenAPI document: VERSION + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from argo_workflows.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from argo_workflows.exceptions import ApiAttributeError + + + +class IoArgoprojWorkflowV1alpha1SyncSelector(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'name': (str,), # noqa: E501 + 'template': (str,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'name': 'name', # noqa: E501 + 'template': 'template', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + """IoArgoprojWorkflowV1alpha1SyncSelector - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + name (str): Name of the selector. [optional] # noqa: E501 + template (str): Template replaced with global variables. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """IoArgoprojWorkflowV1alpha1SyncSelector - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + name (str): Name of the selector. [optional] # noqa: E501 + template (str): Template replaced with global variables. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") diff --git a/sdks/python/client/argo_workflows/models/__init__.py b/sdks/python/client/argo_workflows/models/__init__.py index 75e1b8f38746..1864145b25cc 100644 --- a/sdks/python/client/argo_workflows/models/__init__.py +++ b/sdks/python/client/argo_workflows/models/__init__.py @@ -285,6 +285,7 @@ from argo_workflows.model.io_argoproj_workflow_v1alpha1_submit import IoArgoprojWorkflowV1alpha1Submit from argo_workflows.model.io_argoproj_workflow_v1alpha1_submit_opts import IoArgoprojWorkflowV1alpha1SubmitOpts from argo_workflows.model.io_argoproj_workflow_v1alpha1_suspend_template import IoArgoprojWorkflowV1alpha1SuspendTemplate +from argo_workflows.model.io_argoproj_workflow_v1alpha1_sync_selector import IoArgoprojWorkflowV1alpha1SyncSelector from argo_workflows.model.io_argoproj_workflow_v1alpha1_synchronization import IoArgoprojWorkflowV1alpha1Synchronization from argo_workflows.model.io_argoproj_workflow_v1alpha1_synchronization_status import IoArgoprojWorkflowV1alpha1SynchronizationStatus from argo_workflows.model.io_argoproj_workflow_v1alpha1_ttl_strategy import IoArgoprojWorkflowV1alpha1TTLStrategy diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index f0d815b1073b..487122d51a34 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -1098,11 +1098,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1112,6 +1124,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1121,6 +1139,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -5505,11 +5529,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5519,6 +5555,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5528,6 +5570,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -10316,11 +10364,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10330,6 +10390,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10339,6 +10405,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -12605,11 +12677,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -12619,6 +12703,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -12628,6 +12718,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -17012,11 +17108,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17026,6 +17134,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17035,6 +17149,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -21823,11 +21943,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -21837,6 +21969,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -21846,6 +21984,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -24018,11 +24162,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -24032,6 +24188,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -24041,6 +24203,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -28425,11 +28593,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -28439,6 +28619,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -28448,6 +28634,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -33236,11 +33428,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -33250,6 +33454,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -33259,6 +33469,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), diff --git a/sdks/python/client/docs/CronWorkflowServiceApi.md b/sdks/python/client/docs/CronWorkflowServiceApi.md index 361bc77da1a1..0aa6ba71e7d7 100644 --- a/sdks/python/client/docs/CronWorkflowServiceApi.md +++ b/sdks/python/client/docs/CronWorkflowServiceApi.md @@ -1158,11 +1158,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1172,6 +1184,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1181,6 +1199,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -5565,11 +5589,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5579,6 +5615,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5588,6 +5630,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -10376,11 +10424,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10390,6 +10450,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10399,6 +10465,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -12747,11 +12819,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -12761,6 +12845,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -12770,6 +12860,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -17154,11 +17250,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17168,6 +17276,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17177,6 +17291,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -21965,11 +22085,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -21979,6 +22111,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -21988,6 +22126,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -24423,11 +24567,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -24437,6 +24593,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -24446,6 +24608,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -28830,11 +28998,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -28844,6 +29024,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -28853,6 +29039,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -33641,11 +33833,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -33655,6 +33859,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -33664,6 +33874,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md index 1075ed386944..a3c3e8419e4f 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1Mutex.md @@ -7,6 +7,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **name** | **str** | name of the mutex | [optional] **namespace** | **str** | Namespace is the namespace of the mutex, default: [namespace of workflow] | [optional] +**selectors** | [**[IoArgoprojWorkflowV1alpha1SyncSelector]**](IoArgoprojWorkflowV1alpha1SyncSelector.md) | Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to mutex key to make concurrency more customizable | [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/IoArgoprojWorkflowV1alpha1SemaphoreRef.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1SemaphoreRef.md index 86661369b3ab..0d4af078d038 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1SemaphoreRef.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1SemaphoreRef.md @@ -7,6 +7,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **config_map_key_ref** | [**ConfigMapKeySelector**](ConfigMapKeySelector.md) | | [optional] **namespace** | **str** | Namespace is the namespace of the configmap, default: [namespace of workflow] | [optional] +**selectors** | [**[IoArgoprojWorkflowV1alpha1SyncSelector]**](IoArgoprojWorkflowV1alpha1SyncSelector.md) | Selectors is a list of references to dynamic values (like parameters, labels, annotations) that can be added to semaphore key to make concurrency more customizable | [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/IoArgoprojWorkflowV1alpha1SyncSelector.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1SyncSelector.md new file mode 100644 index 000000000000..7d7c73ae5aee --- /dev/null +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1SyncSelector.md @@ -0,0 +1,14 @@ +# IoArgoprojWorkflowV1alpha1SyncSelector + +Synchronization selector + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **str** | Name of the selector | [optional] +**template** | **str** | Template replaced with global variables | [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 5065bd3ce070..cb35d223384f 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -1113,11 +1113,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1127,6 +1139,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1136,6 +1154,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -5520,11 +5544,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5534,6 +5570,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5543,6 +5585,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -10331,11 +10379,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10345,6 +10405,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10354,6 +10420,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -17132,11 +17204,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17146,6 +17230,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17155,6 +17245,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -18557,11 +18653,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -18571,6 +18679,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -18580,6 +18694,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -22964,11 +23084,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -22978,6 +23110,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -22987,6 +23125,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -27775,11 +27919,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -27789,6 +27945,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -27798,6 +27960,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -30106,11 +30274,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -30120,6 +30300,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -30129,6 +30315,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -34513,11 +34705,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -34527,6 +34731,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -34536,6 +34746,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -39324,11 +39540,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -39338,6 +39566,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -39347,6 +39581,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -46125,11 +46365,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -46139,6 +46391,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -46148,6 +46406,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -47550,11 +47814,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -47564,6 +47840,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -47573,6 +47855,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -51957,11 +52245,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -51971,6 +52271,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -51980,6 +52286,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -56768,11 +57080,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -56782,6 +57106,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -56791,6 +57121,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index 2319839824d7..77331e14a6c2 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -1100,11 +1100,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1114,6 +1126,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -1123,6 +1141,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -5507,11 +5531,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5521,6 +5557,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -5530,6 +5572,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -10318,11 +10366,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10332,6 +10392,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -10341,6 +10407,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -12614,11 +12686,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -12628,6 +12712,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -12637,6 +12727,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -17021,11 +17117,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17035,6 +17143,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -17044,6 +17158,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -21832,11 +21952,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -21846,6 +21978,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -21855,6 +21993,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -24041,11 +24185,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -24055,6 +24211,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -24064,6 +24226,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -28448,11 +28616,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -28462,6 +28642,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -28471,6 +28657,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), @@ -33259,11 +33451,23 @@ with argo_workflows.ApiClient(configuration) as api_client: mutex=IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), mutexes=[ IoArgoprojWorkflowV1alpha1Mutex( name="name_example", namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], semaphore=IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -33273,6 +33477,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), semaphores=[ IoArgoprojWorkflowV1alpha1SemaphoreRef( @@ -33282,6 +33492,12 @@ with argo_workflows.ApiClient(configuration) as api_client: optional=True, ), namespace="namespace_example", + selectors=[ + IoArgoprojWorkflowV1alpha1SyncSelector( + name="name_example", + template="template_example", + ), + ], ), ], ), diff --git a/test/e2e/argo_server_test.go b/test/e2e/argo_server_test.go index 0159cf5177da..3000261ad47e 100644 --- a/test/e2e/argo_server_test.go +++ b/test/e2e/argo_server_test.go @@ -611,7 +611,7 @@ func (s *ArgoServerSuite) TestPermission() { // Test get wf w/ archive fallback with good token s.bearerToken = goodToken s.Run("GetWFsFallbackArchivedGoodToken", func() { - s.e().GET("/api/v1/workflows/"+uid). + s.e().GET("/api/v1/workflows/"+nsName). WithQuery("listOptions.labelSelector", "workflows.argoproj.io/test"). Expect(). Status(200) @@ -620,7 +620,7 @@ func (s *ArgoServerSuite) TestPermission() { // Test get wf w/ archive fallback with bad token s.bearerToken = badToken s.Run("GetWFsFallbackArchivedBadToken", func() { - s.e().GET("/api/v1/workflows/" + uid). + s.e().GET("/api/v1/workflows/" + nsName). Expect(). Status(403) }) @@ -628,9 +628,9 @@ func (s *ArgoServerSuite) TestPermission() { // Test get wf w/ archive fallback with fake token s.bearerToken = fakeToken s.Run("GetWFsFallbackArchivedFakeToken", func() { - s.e().GET("/api/v1/workflows/" + uid). + s.e().GET("/api/v1/workflows/" + nsName). Expect(). - Status(403) + Status(401) }) // Test deleting archived wf with bad token diff --git a/test/e2e/functional/json-argument.yaml b/test/e2e/functional/json-argument.yaml index 1c40509a683a..846633ba56c3 100644 --- a/test/e2e/functional/json-argument.yaml +++ b/test/e2e/functional/json-argument.yaml @@ -6,20 +6,23 @@ spec: entrypoint: parsejson arguments: parameters: - - name: json1 - value: | - {"val": "hello one"} - - name: json2 - value: | - {"val": "hello two"} - templates: - - name: parsejson - inputs: - parameters: - name: json1 + value: | + {"val": "hello one"} - name: json2 - container: - image: quay.io/argoproj/argoexec:latest - imagePullPolicy: Never - command: [sh, -c] - args: ["echo '{{inputs.parameters.json1}}' | jq . ; echo '{{inputs.parameters.json2}}' | jq ."] + value: | + {"val": "hello two"} + templates: + - name: parsejson + inputs: + parameters: + - name: json1 + - name: json2 + container: + image: quay.io/codefresh/argoexec:latest + imagePullPolicy: Never + command: [sh, -c] + args: + [ + "echo '{{inputs.parameters.json1}}' | jq . ; echo '{{inputs.parameters.json2}}' | jq .", + ] diff --git a/test/e2e/functional/output-jqfilter-parameters.yaml b/test/e2e/functional/output-jqfilter-parameters.yaml index 0d6a72560309..26dc97064481 100644 --- a/test/e2e/functional/output-jqfilter-parameters.yaml +++ b/test/e2e/functional/output-jqfilter-parameters.yaml @@ -5,100 +5,101 @@ metadata: spec: entrypoint: main templates: + # main template that: + # * create a configmap with json payload + # * extract data using jqFilter from it + # * compare the output parameters are what we expect + - name: main + steps: + - - name: create-param + template: create-param - # main template that: - # * create a configmap with json payload - # * extract data using jqFilter from it - # * compare the output parameters are what we expect - - name: main - steps: - - - name: create-param - template: create-param + - - name: get-param + template: get-param - - - name: get-param - template: get-param + - - name: check-param-one-value + template: check-param + arguments: + parameters: + - name: key + value: "{{steps.get-param.outputs.parameters.one_value}}" + - name: value + value: "foo" + - name: check-param-one-dict + template: check-param + arguments: + parameters: + - name: key + value: "{{steps.get-param.outputs.parameters.one_dict}}" + - name: value + value: | + {"foo":"bar"} + - name: check-param-one-list + template: check-param + arguments: + parameters: + - name: key + value: "{{steps.get-param.outputs.parameters.one_list}}" + - name: value + value: | + [{"foo":"bar"}] - - - name: check-param-one-value - template: check-param - arguments: - parameters: + # check that key and value parameters are aligned + - name: check-param + inputs: + parameters: - name: key - value: "{{steps.get-param.outputs.parameters.one_value}}" - name: value - value: "foo" - - name: check-param-one-dict - template: check-param - arguments: - parameters: - - name: key - value: "{{steps.get-param.outputs.parameters.one_dict}}" - - name: value - value: | - {"foo":"bar"} - - name: check-param-one-list - template: check-param - arguments: - parameters: - - name: key - value: "{{steps.get-param.outputs.parameters.one_list}}" - - name: value - value: | - [{"foo":"bar"}] - - # check that key and value parameters are aligned - - name: check-param - inputs: - parameters: - - name: key - - name: value - container: - image: quay.io/argoproj/argoexec:latest - imagePullPolicy: Never - command: [sh, -c] - args: [" - echo '<{{inputs.parameters.key}}>' > /tmp/input; - echo '<{{inputs.parameters.value}}>' > /tmp/expected; - diff /tmp/input /tmp/expected; - "] + container: + image: quay.io/codefresh/argoexec:latest + imagePullPolicy: Never + command: [sh, -c] + args: [ + " + echo '<{{inputs.parameters.key}}>' > /tmp/input; + echo '<{{inputs.parameters.value}}>' > /tmp/expected; + diff /tmp/input /tmp/expected; + ", + ] - # extract parameters from a configmap json payload using jqFilter - - name: get-param - resource: - action: get - manifest: | - apiVersion: v1 - kind: ConfigMap - metadata: - name: cm-output-jqfilter-parameters - outputs: - parameters: - - name: one_value - valueFrom: - jqFilter: '.data.some | fromjson | .one_value' - - name: one_dict - valueFrom: - jqfilter: '.data.some | fromjson | .one_dict' - - name: one_list - valueFrom: - jqfilter: '.data.some | fromjson | .one_list' + # extract parameters from a configmap json payload using jqFilter + - name: get-param + resource: + action: get + manifest: | + apiVersion: v1 + kind: ConfigMap + metadata: + name: cm-output-jqfilter-parameters + outputs: + parameters: + - name: one_value + valueFrom: + jqFilter: ".data.some | fromjson | .one_value" + - name: one_dict + valueFrom: + jqfilter: ".data.some | fromjson | .one_dict" + - name: one_list + valueFrom: + jqfilter: ".data.some | fromjson | .one_list" - # create a configmap with json payload - - name: create-param - resource: - action: create - manifest: | - apiVersion: v1 - kind: ConfigMap - metadata: - name: cm-output-jqfilter-parameters - data: - some: | - { - "one_value": "foo", - "one_dict": {"foo":"bar"}, - "one_list": [ - { - "foo":"bar" - } - ] - } + # create a configmap with json payload + - name: create-param + resource: + action: create + manifest: | + apiVersion: v1 + kind: ConfigMap + metadata: + name: cm-output-jqfilter-parameters + data: + some: | + { + "one_value": "foo", + "one_dict": {"foo":"bar"}, + "one_list": [ + { + "foo":"bar" + } + ] + } diff --git a/test/e2e/manifests/stress/workflow-controller-deployment.yaml b/test/e2e/manifests/stress/workflow-controller-deployment.yaml index 226762e2a115..f31d03047fb9 100644 --- a/test/e2e/manifests/stress/workflow-controller-deployment.yaml +++ b/test/e2e/manifests/stress/workflow-controller-deployment.yaml @@ -10,10 +10,12 @@ spec: - name: workflow-controller args: - --loglevel=warn + - --configmap=workflow-controller-configmap + - --executor-image=quay.io/codefresh/argoexec:latest - --namespaced - --burst=2048 - --qps=512 - --workflow-workers=128 env: - name: ARGO_PPROF - value: "true" \ No newline at end of file + value: "true" diff --git a/test/e2e/testdata/artifact-workflow-stopped.yaml b/test/e2e/testdata/artifact-workflow-stopped.yaml index ae85aa207a3f..a6cb3c97c157 100644 --- a/test/e2e/testdata/artifact-workflow-stopped.yaml +++ b/test/e2e/testdata/artifact-workflow-stopped.yaml @@ -15,7 +15,7 @@ spec: - metadata: name: artifacts spec: - accessModes: [ "ReadWriteOnce" ] + accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi diff --git a/test/e2e/testdata/artifactgc/artgc-dag-wf-self-delete.yaml b/test/e2e/testdata/artifactgc/artgc-dag-wf-self-delete.yaml index ddce1199d629..90214567c747 100644 --- a/test/e2e/testdata/artifactgc/artgc-dag-wf-self-delete.yaml +++ b/test/e2e/testdata/artifactgc/artgc-dag-wf-self-delete.yaml @@ -20,7 +20,7 @@ spec: - metadata: name: artifacts spec: - accessModes: [ "ReadWriteOnce" ] + accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi diff --git a/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped-pod-gc-on-pod-completion.yaml b/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped-pod-gc-on-pod-completion.yaml index a1cf99967bb1..e44296bf73ef 100644 --- a/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped-pod-gc-on-pod-completion.yaml +++ b/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped-pod-gc-on-pod-completion.yaml @@ -18,7 +18,7 @@ spec: - metadata: name: artifacts spec: - accessModes: [ "ReadWriteOnce" ] + accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi diff --git a/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped.yaml b/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped.yaml index 12251ae51238..ae4f428a9d01 100644 --- a/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped.yaml +++ b/test/e2e/testdata/artifactgc/artgc-dag-wf-stopped.yaml @@ -20,7 +20,7 @@ spec: - metadata: name: artifacts spec: - accessModes: [ "ReadWriteOnce" ] + accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi diff --git a/test/e2e/testdata/retry-on-stopped.yaml b/test/e2e/testdata/retry-on-stopped.yaml index 6b7276f570cb..734c98cba2f3 100644 --- a/test/e2e/testdata/retry-on-stopped.yaml +++ b/test/e2e/testdata/retry-on-stopped.yaml @@ -24,7 +24,7 @@ spec: - name: sleep container: image: alpine:latest - command: [ sleep, "10" ] + command: [sleep, "10"] - name: stop container: diff --git a/workflow/sync/lock_name.go b/workflow/sync/lock_name.go index 41d9902af8e1..fcc71cee6937 100644 --- a/workflow/sync/lock_name.go +++ b/workflow/sync/lock_name.go @@ -2,6 +2,7 @@ package sync import ( "fmt" + "regexp" "strings" "github.com/argoproj/argo-workflows/v3/errors" @@ -20,14 +21,16 @@ type lockName struct { ResourceName string Key string Kind lockKind + Selectors []v1alpha1.SyncSelector } -func newLockName(namespace, resourceName, lockKey string, kind lockKind) *lockName { +func newLockName(namespace, resourceName, lockKey string, kind lockKind, selectors []v1alpha1.SyncSelector) *lockName { return &lockName{ Namespace: namespace, ResourceName: resourceName, Key: lockKey, Kind: kind, + Selectors: selectors, } } @@ -37,7 +40,7 @@ func getSemaphoreLockName(sem *v1alpha1.SemaphoreRef, wfNamespace string) (*lock if namespace == "" { namespace = wfNamespace } - return newLockName(namespace, sem.ConfigMapKeyRef.Name, sem.ConfigMapKeyRef.Key, lockKindConfigMap), nil + return newLockName(namespace, sem.ConfigMapKeyRef.Name, sem.ConfigMapKeyRef.Key, lockKindConfigMap, sem.Selectors), nil } return nil, fmt.Errorf("cannot get LockName for a Semaphore without a ConfigMapRef") } @@ -47,7 +50,7 @@ func getMutexLockName(mtx *v1alpha1.Mutex, wfNamespace string) *lockName { if namespace == "" { namespace = wfNamespace } - return newLockName(namespace, mtx.Name, "", lockKindMutex) + return newLockName(namespace, mtx.Name, "", lockKindMutex, mtx.Selectors) } func getLockName(item *syncItem, wfNamespace string) (*lockName, error) { @@ -62,7 +65,10 @@ func getLockName(item *syncItem, wfNamespace string) (*lockName, error) { } func DecodeLockName(name string) (*lockName, error) { - items := strings.SplitN(name, "/", 3) + splittedLockName := strings.Split(name, "?") + lockNameTrimedSelectors := splittedLockName[0] + selectors := ParseSelectors(strings.Join(splittedLockName[1:], "?")) + items := strings.SplitN(lockNameTrimedSelectors, "/", 3) if len(items) < 3 { return nil, errors.New(errors.CodeBadRequest, "Invalid lock key: unknown format") } @@ -73,7 +79,7 @@ func DecodeLockName(name string) (*lockName, error) { switch lockKind { case lockKindMutex: - lock = lockName{Namespace: namespace, Kind: lockKind, ResourceName: items[2]} + lock = lockName{Namespace: namespace, Kind: lockKind, ResourceName: items[2], Selectors: selectors} case lockKindConfigMap: components := strings.Split(items[2], "/") @@ -81,7 +87,7 @@ func DecodeLockName(name string) (*lockName, error) { return nil, errors.New(errors.CodeBadRequest, "Invalid ConfigMap lock key: unknown format") } - lock = lockName{Namespace: namespace, Kind: lockKind, ResourceName: components[0], Key: components[1]} + lock = lockName{Namespace: namespace, Kind: lockKind, ResourceName: components[0], Key: components[1], Selectors: selectors} default: return nil, errors.New(errors.CodeBadRequest, fmt.Sprintf("Invalid lock key, unexpected kind: %s", lockKind)) } @@ -93,11 +99,50 @@ func DecodeLockName(name string) (*lockName, error) { return &lock, nil } +func StringifySelectors(selectors []v1alpha1.SyncSelector) string { + joinedSelectors := "" + for _, selector := range selectors { + // at this point template should be already replaced + if selector.Template != "" { + // escape & and = chars to decode easily later + re := regexp.MustCompile("&|=") + escapedSelectorName := re.ReplaceAllString(selector.Name, "-") + escapedSelectorValue := re.ReplaceAllString(selector.Template, "-") + + joinedSelectors = joinedSelectors + fmt.Sprintf("%s=%s&", escapedSelectorName, escapedSelectorValue) + } + } + return strings.TrimRight(joinedSelectors, "&") +} + +func ParseSelectors(selectors string) []v1alpha1.SyncSelector { + parsedSelectors := []v1alpha1.SyncSelector{} + splittedSelectors := strings.Split(selectors, "&") + + for _, selectorStr := range splittedSelectors { + keyValPair := strings.Split(selectorStr, "=") + if len(keyValPair) == 2 { + parsedSelectors = append(parsedSelectors, v1alpha1.SyncSelector{ + Name: keyValPair[0], + Template: keyValPair[1], + }) + } + // otherwise consider invalid, do nothing + } + return parsedSelectors +} + func (ln *lockName) encodeName() string { - if ln.Kind == lockKindMutex { - return ln.validateEncoding(fmt.Sprintf("%s/%s/%s", ln.Namespace, ln.Kind, ln.ResourceName)) + encodingBuilder := &strings.Builder{} + + encodingBuilder.WriteString(fmt.Sprintf("%s/%s/%s", ln.Namespace, ln.Kind, ln.ResourceName)) + if ln.Kind == lockKindConfigMap { + encodingBuilder.WriteString(fmt.Sprintf("/%s", ln.Key)) + } + if selectors := StringifySelectors(ln.Selectors); len(selectors) > 0 { + encodingBuilder.WriteString(fmt.Sprintf("?%s", selectors)) } - return ln.validateEncoding(fmt.Sprintf("%s/%s/%s/%s", ln.Namespace, ln.Kind, ln.ResourceName, ln.Key)) + return ln.validateEncoding(encodingBuilder.String()) } func (ln *lockName) validate() error { diff --git a/workflow/sync/lock_name_test.go b/workflow/sync/lock_name_test.go index 559c2becdefb..b1a1de759f14 100644 --- a/workflow/sync/lock_name_test.go +++ b/workflow/sync/lock_name_test.go @@ -5,6 +5,8 @@ import ( "testing" "github.com/stretchr/testify/assert" + + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" ) func TestDecodeLockName(t *testing.T) { @@ -25,6 +27,7 @@ func TestDecodeLockName(t *testing.T) { ResourceName: "test", Key: "", Kind: lockKindMutex, + Selectors: []v1alpha1.SyncSelector{}, }, func(t assert.TestingT, err error, i ...interface{}) bool { return true @@ -38,6 +41,7 @@ func TestDecodeLockName(t *testing.T) { ResourceName: "test/foo/bar/baz", Key: "", Kind: lockKindMutex, + Selectors: []v1alpha1.SyncSelector{}, }, func(t assert.TestingT, err error, i ...interface{}) bool { return true @@ -51,6 +55,7 @@ func TestDecodeLockName(t *testing.T) { ResourceName: "foo", Key: "bar", Kind: lockKindConfigMap, + Selectors: []v1alpha1.SyncSelector{}, }, func(t assert.TestingT, err error, i ...interface{}) bool { return true @@ -64,6 +69,40 @@ func TestDecodeLockName(t *testing.T) { return err == nil // this should error }, }, + { + "TestConfigMapSelectorsParsedCorrectly", + args{"default/ConfigMap/foo/bar?selector1=selector1-value&selector2=selector2-value"}, + &lockName{ + Namespace: "default", + ResourceName: "foo", + Key: "bar", + Kind: lockKindConfigMap, + Selectors: []v1alpha1.SyncSelector{ + {Name: "selector1", Template: "selector1-value"}, + {Name: "selector2", Template: "selector2-value"}, + }, + }, + func(t assert.TestingT, err error, i ...interface{}) bool { + return true + }, + }, + { + "TestMutexSelectorsParsedCorrectly", + args{"default/Mutex/test?selector1=selector1-value&selector2=selector2-value"}, + &lockName{ + Namespace: "default", + ResourceName: "test", + Key: "", + Kind: lockKindMutex, + Selectors: []v1alpha1.SyncSelector{ + {Name: "selector1", Template: "selector1-value"}, + {Name: "selector2", Template: "selector2-value"}, + }, + }, + func(t assert.TestingT, err error, i ...interface{}) bool { + return true + }, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {